home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / edo / source / m100.bas
BASIC Source File  |  1994-06-01  |  77KB  |  1,695 lines

  1. 1000 '*----------------------------------------------------------------*
  2. 1010 '  江 戸  V1.1 L10a
  3. 1020 '                      [1993 FUJISSLY SOFT]
  4. 1030 '*----------------------------------------------------------------*
  5. 1040 '
  6. 1050 *INIT
  7. 1060  GOSUB *FM_OFF
  8. 1070  CLEAR ,,,,64*1024,300*1024
  9. 1080  STOP OFF:ON ERROR GOTO *MERR
  10. 1090  DEFINT A-Z
  11. 1100  'DIM DM&(31,15,15)
  12. 1110  DIM CDS(20)
  13. 1120  DIM PL(15),BPAL(15)
  14. 1130  DIM WIN&(32*1024),WBC&(32*1024),WID&(19)
  15. 1140  DIM WX(19),WY(19),WWX(19),WWY(19),WIF(19):WIN=0
  16. 1150  DIM DIR$(255),FLSB&(200*64\8)
  17. 1160  DIM WORK&(16*16*32-1),BACK&(16*16*32-1),UNDO&(16*16*32-1),DM&(31)
  18. 1170  DIM MOP(63,8),MOA(63,10),MOL(1,8),MDP(63),MDA(63),MDAMMY(255)
  19. 1180  DIM LOGO&(76*56/8+64),WMAN(19)
  20. 1190  DIM WST(99),WWS(99):WIN=-1
  21. 1200  DIM MES$(3),MESW&(384*88\8+7)
  22. 1210  DIM EUP(60000)
  23. 1220  DIM EDO(63)
  24. 1230  VER$="V1.1 L10a"
  25. 1240  MAIN=0 'メインメニュー選択番号
  26. 1250  PPEN=0 '編集モード番号
  27. 1260  GB=1 'スクリーンモード(1:等倍 2:x2 4:x4 8:x8)
  28. 1270  PAL=0'現在の選択パレット
  29. 1280  'SPOIT=0'スポイト使用中フラッグ
  30. 1290  LOOP=0'EUPプレイヤーループ指定
  31. 1300  CDPL=0'CD演奏中か?
  32. 1310  EUPL=0'EUP演奏中か?
  33. 1320  HENG=1'編集画面表示
  34. 1330  BACG=1'背景画面表示
  35. 1340  KAKI=0'書換えフラッグ
  36. 1350  MPEDOX=-1:MPEDOY=-1'保存用
  37. 1360 '
  38. 1370  '機械語プロシジャ読み込み
  39. 1380  EGB_CALL&=0:BAS_LIB&=4096*2:SPRBACK&=20*1024
  40. 1390 'SHELL "G:":SHELL "CD \MONDO~"
  41. 1400  LOADM"rex\EGBCALL.REX",EGB_CALL& '作者:OcToh[オクト] 氏
  42. 1410  LOADM"rex\BAS_LIB.REX",BAS_LIB&  '作者:OcToh[オクト] 氏
  43. 1420  LOADM"SPRBACK.REX",SPRBACK&
  44. 1430  '
  45. 1440  DIM EGB_STACK(32867),EGB_WORK(1000),EGB_PARM(100)  'EGB用配列各種
  46. 1450  AH=0:AL=0:EBX&=0:ECX&=0:EDX&=0:ESI&=0:RET&=0      'EGBCALL.REX用変数
  47. 1460  EGB&=0                                    'EGBCALL.REXが返すAHの内容
  48. 1470  GOSUB *EGB_INIT
  49. 1480 SCREEN@0:SCREEN 0:GOSUB *N_VIEW:MS1=8:GOSUB *M_INIT
  50. 1490 '
  51. 1500 'CLS:WLD$="*.*":GOSUB *DIR_SEARCH:FOR I=0 TO DIR-1:FPS$=DIR$(I):GOSUB *FLIST_P:NEXT
  52. 1510 'END
  53. 1520 GOSUB *INIT_CHAR:GOSUB *INIT_BACK
  54. 1530 DEF SPRITE 1,128,(0,0),0,16,16,1,0
  55. 1540 DEF SPRITE 1,384,(0,0),256,16,16,1,1
  56. 1550 DEF SPRITE 3,1
  57. 1560 GOSUB *PAL_SET
  58. 1570 LINE(0,0)-(15,15),PSET,0,BF
  59. 1580 GOSUB *PAL_SPR
  60. 1590 '
  61. 1600 *SET_DEF
  62. 1610  DEF FNSPX(P,X)=X-SPRITE(P,6)
  63. 1620  DEF FNSPY(P,Y)=Y-SPRITE(P,7)
  64. 1630  DEF FNMHAN(X1,Y1,X2,Y2)=(MOUSE(0)>=X1)AND(MOUSE(1)>=Y1)AND(MOUSE(0)<=X2)AND(MOUSE(1)<=Y2)
  65. 1640  DEF FNMPAU(X1,Y1,X2,Y2,MB)=(MOUSE(0)>=X1)AND(MOUSE(1)>=Y1)AND(MOUSE(0)<=X2)AND(MOUSE(1)<=Y2)AND(MOUSE(2,MB))
  66. 1650  DEF FNMW(X,Y,MB)=(X>=WX(WN))AND(Y>=WY(WN))AND(X<=WX(WN)+WWX(WN))AND(Y<=WY(WN)+WWY(WN))AND MB
  67. 1660 '
  68. 1670 *ON_MEMORY_READ
  69. 1680  RESTORE *ON_MOMORY_DATA
  70. 1690  FOR I=0 TO 8:FOR J=0 TO 63:READ A$:GOSUB *進10:MOP(J,I)=A:NEXT:NEXT
  71. 1700  FOR I=0 TO 10:FOR J=0 TO 63:READ A$:GOSUB *進10:MOA(J,I)=A:NEXT:NEXT
  72. 1710  FOR I=0 TO 8:FOR J=0 TO  1:READ A:MOL(J,I)=A:NEXT:NEXT
  73. 1720 '
  74. 1730 GB=1:MS1=8
  75. 1740 GOSUB *WMAKE
  76. 1750 FOR I=0 TO 9:WX(I)=320-WWX(I)/2:WY(I)=240-WWY(I)/2:NEXT
  77. 1760 GOSUB *MAIN_SCREEN
  78. 1770 GOTO *MAIN
  79. 1780 '
  80. 1790 '
  81. 1800 *INIT_CHAR
  82. 1810  LINE(640,0)-(895,255),PSET,0,BF
  83. 1820  GET@A(640,0)-(895,255),WORK&
  84. 1830  ERASE DM&:DIM DM&(31):FOR I=0 TO 255:DEF SPRITE 0,I,DM&,0:NEXT
  85. 1840 RETURN
  86. 1850 *INIT_BACK
  87. 1860  ERASE DM&:DIM DM&(31):FOR I=256 TO 511:DEF SPRITE 0,I,DM&,0:NEXT
  88. 1870 RETURN
  89. 1880 *SET_CHAR
  90. 1890  GOSUB *M_OFF
  91. 1900  FOR Y_=0 TO 15:FOR X_=0 TO 15
  92. 1910    GET@A(640+X_*16,Y_*16)-(640+X_*16+15,Y_*16+15),DM&
  93. 1920    DEF SPRITE 0,Y_*16+X_,DM&,0
  94. 1930  NEXT:NEXT
  95. 1940  GOSUB *M_ON
  96. 1950 RETURN
  97. 1960 *SET_BACK
  98. 1970  GOSUB *M_OFF
  99. 1980  FOR Y_=0 TO 15:FOR X_=0 TO 15
  100. 1990    GET@A(640+X_*16,256+Y_*16)-(640+X_*16+15,256+Y_*16+15),DM&
  101. 2000    DEF SPRITE 0,256+Y_*16+X_,DM&,0
  102. 2010  NEXT:NEXT
  103. 2020  GOSUB *M_ON
  104. 2030 RETURN
  105. 2040 '
  106. 2050 *PAL_SET
  107. 2060  DEF SPRITE 2,0,PL
  108. 2070 RETURN
  109. 2080 *WMAKE
  110. 2090 'ウインドー描画
  111. 2100 GOSUB *M_OFF
  112. 2110 LOAD@"LOGO.TIF",(0,0):GET@A(0,0)-(74,54),LOGO&
  113. 2120 '0:メインメニュー
  114. 2130 LINE(0,0)-(639,479),PSET,%7,BF
  115. 2140 DEF FONT "システム   12ドット":PALETTE 14,0
  116. 2150 WX(0)=0:WY(0)=0:WWX(0)=137:WWY(0)=79:WN=0:GOSUB *PWIN
  117. 2160 GOSUB *WWAK
  118. 2170 S$="編集":MSX=6:MSY=20:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT':GOSUB *SWT_ON_R
  119. 2180 S$="背景":MSX=48:MEX=MSX+39:GOSUB *PSWT
  120. 2190 S$="UNDO":MSX=90:MSY=20:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT
  121. 2200 S$="LOAD":MSX=6:MSY=38:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT
  122. 2210 S$="SAVE":MSX=48:MEX=MSX+39:GOSUB *PSWT
  123. 2220 S$="  ":MSX=90:MSY=38:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT
  124. 2230 S$="新規":MSX=6:MSY=56:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT
  125. 2240 S$="SP":MSX=48:MEX=MSX+39:GOSUB *PSWT
  126. 2250 S$="終了":MSX=90:MSY=56:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT
  127. 2260 SYMBOL(21,5),"メインメニュー ====",.75!,.75!,%8
  128. 2270 SYMBOL(20,4),"メインメニュー ====",.75!,.75!,7
  129. 2280 LINE(4,4)-STEP(11,0),PSET,%15,BF
  130. 2290 LINE(4,4)-STEP(0,11),PSET,%15,BF
  131. 2300 LINE(15,15)-STEP(-11,0),PSET,%8,BF
  132. 2310 LINE(15,15)-STEP(0,-11),PSET,%8,BF
  133. 2320 WID&(0)=0 '(WWX(0)+1)*(WWY(0)+1)\8
  134. 2330 GET@A(0,0)-(WWX(0),WWY(0)),WIN&,WID&(0)
  135. 2340 CLS
  136. 2350 'ウインドー描画
  137. 2360 '1:編集モード
  138. 2370 LINE(0,0)-(639,479),PSET,%7,BF
  139. 2380 WX(1)=0:WY(1)=0:WWX(1)=137+42:WWY(1)=79+18:WN=1:GOSUB *PWIN
  140. 2390 GOSUB *WWAK
  141. 2400 S$=" 点 ":MSX=6:MSY=20:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT':GOSUB *SWT_ON_R
  142. 2410 S$="塗り":MSX=48:MEX=MSX+39:GOSUB *PSWT
  143. 2420 S$="  ":MSX=90:MEX=MSX+39:GOSUB *PSWT
  144. 2430 S$="  ":MSX=132:MEX=MSX+39:GOSUB *PSWT
  145. 2440 FOR J=0 TO 1:S$="  ":MSX=6:MSY=38+36*J:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT
  146. 2450 S$="  ":MSX=48:MEX=MSX+39:GOSUB *PSWT
  147. 2460 S$="  ":MSX=90:MEX=MSX+39:GOSUB *PSWT
  148. 2470 S$="  ":MSX=132:MEX=MSX+39:GOSUB *PSWT:NEXT
  149. 2480 S$="複写":MSX=6:MSY=56:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT
  150. 2490 S$="移動":MSX=48:MEX=MSX+39:GOSUB *PSWT
  151. 2500 S$="  ":MSX=90:MEX=MSX+39:GOSUB *PSWT
  152. 2510 S$="  ":MSX=132:MEX=MSX+39:GOSUB *PSWT
  153. 2520 SYMBOL(21,5),"編集モード ===============",.75!,.75!,%8
  154. 2530 SYMBOL(20,4),"編集モード ===============",.75!,.75!,7
  155. 2540 LINE(4,4)-STEP(11,0),PSET,%15,BF
  156. 2550 LINE(4,4)-STEP(0,11),PSET,%15,BF
  157. 2560 LINE(15,15)-STEP(-11,0),PSET,%8,BF
  158. 2570 LINE(15,15)-STEP(0,-11),PSET,%8,BF
  159. 2580 WID&(1)=WID&(0)+(WWX(WN)+1)*(WWY(WN)+1)
  160. 2590 GET@A(0,0)-(WWX(1),WWY(1)),WIN&,WID&(1)
  161. 2600 'PUT@A(0,0)-(WWX(1),WWY(1)),WIN&,,,,,WID&(1)
  162. 2610 CLS
  163. 2620 '2:スクリーンモード
  164. 2630 LINE(0,0)-(639,479),PSET,%7,BF
  165. 2640 WX(2)=0:WY(2)=0:WWX(2)=137+42:WWY(2)=79-18:WN=2:GOSUB *PWIN
  166. 2650 GOSUB *WWAK
  167. 2660 S$="等倍":MSX=6:MSY=20:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT
  168. 2670 S$="x 2":MSX=48:MEX=MSX+39:GOSUB *PSWT
  169. 2680 S$="x 4":MSX=90:MEX=MSX+39:GOSUB *PSWT
  170. 2690 S$="x 8":MSX=132:MEX=MSX+39:GOSUB *PSWT
  171. 2700 S$="確認":MSX=6:MSY=38:MEX=MSX+39:MEY=MSY+15:GOSUB *PSWT':GOSUB *SWT_ON_R
  172. 2710 S$="":MSX=48:MEX=MSX+39:GOSUB *PSWT
  173. 2720 S$="編集":MSX=90:MEX=MSX+39:GOSUB *PSWT':GOSUB *SWT_ON_G
  174. 2730 S$="背景":MSX=132:MEX=MSX+39:GOSUB *PSWT':GOSUB *SWT_ON_G
  175. 2740 SYMBOL(21,5),"スクリーン ===============",.75!,.75!,%8
  176. 2750 SYMBOL(20,4),"スクリーン ===============",.75!,.75!,7
  177. 2760 LINE(4,4)-STEP(11,0),PSET,%15,BF
  178. 2770 LINE(4,4)-STEP(0,11),PSET,%15,BF
  179. 2780 LINE(15,15)-STEP(-11,0),PSET,%8,BF
  180. 2790 LINE(15,15)-STEP(0,-11),PSET,%8,BF
  181. 2800 WID&(2)=WID&(1)+2254'INT ((INT((WWX(WN)+1+7)/8)*(WWY(WN)+1)*4+4-1)/4)
  182. 2810 GET@A(0,0)-(WWX(2),WWY(2)),WIN&,WID&(2)
  183. 2820 'PUT@A(0,0)-(WWX(2),WWY(2)),WIN&,,,,,WID&(2)
  184. 2830 'PUT@A(0,0)-(WWX(1),WWY(1)+80),WIN&,,,,,WID&(1):STOP
  185. 2840 CLS
  186. 2850 '3:パレット
  187. 2860 LINE(0,0)-(639,479),PSET,%7,BF
  188. 2870 WX(3)=0:WY(3)=0:WWX(3)=16*11-1:WWY(3)=16*4+20+8-1:WN=3:GOSUB *PWIN
  189. 2880 GOSUB *WWAK
  190. 2890 SYMBOL(21,5),"パレット =======",.75!,.75!,%8
  191. 2900 SYMBOL(20,4),"パレット =======",.75!,.75!,7
  192. 2910 LINE(4,4)-STEP(11,0),PSET,%15,BF
  193. 2920 LINE(4,4)-STEP(0,11),PSET,%15,BF
  194. 2930 LINE(15,15)-STEP(-11,0),PSET,%8,BF
  195. 2940 LINE(15,15)-STEP(0,-11),PSET,%8,BF
  196. 2950 FOR I=0 TO 15:LINE(16+(I MOD 4)*16,20+(I\4)*16)-STEP(16,16),PSET,%0,BF:LINE(16+(I MOD 4)*16,20+(I\4)*16)-STEP(16,16),PSET,7,B:NEXT:LINE(17,21)-STEP(14,14),PSET,%13,BF:RGB=PL(0):GOSUB *RGB_BUNKAI:PALETTE 13,[G*8,R*8,B*8]
  197. 2960 SYMBOL(89,22+20*0+5),"R",.75!,.75!,%2
  198. 2970 SYMBOL(88,22+20*0+4),"R",.75!,.75!,2
  199. 2980 SYMBOL(89,22+20*1+5),"G",.75!,.75!,%4
  200. 2990 SYMBOL(88,22+20*1+4),"G",.75!,.75!,4
  201. 3000 SYMBOL(89,22+20*2+5),"B",.75!,.75!,%1
  202. 3010 SYMBOL(88,22+20*2+4),"B",.75!,.75!,1
  203. 3020 'SYMBOL(156,27)," 0",.75!,.75!,0
  204. 3030 'SYMBOL(156,47),"15",.75!,.75!,0
  205. 3040 'SYMBOL(156,67),"31",.75!,.75!,0
  206. 3050 LINE(107,26)-STEP(33,13),PSET,%2,BF
  207. 3060 LINE(107,26)-STEP(33,13),PSET,%14,B
  208. 3070 LINE(107,46)-STEP(33,13),PSET,%4,BF
  209. 3080 LINE(107,46)-STEP(33,13),PSET,%14,B
  210. 3090 LINE(107,66)-STEP(33,13),PSET,%1,BF
  211. 3100 LINE(107,66)-STEP(33,13),PSET,%14,B
  212. 3110 FOR I=0 TO 2
  213. 3120   MSX=98:MSY=26+I*20:MEX=MSX+8:MEY=MSY+13:GOSUB *PBTN
  214. 3130   MSX=141:MSY=26+I*20:MEX=MSX+8:MEY=MSY+13:GOSUB *PBTN
  215. 3140 NEXT
  216. 3150 'LINE(160-20,4)-STEP(15,13),PSET,0,BF
  217. 3160 'LINE(112+16,4)-STEP(43,0),PSET,%15,BF
  218. 3170 'LINE(112+16,4)-STEP(0,11),PSET,%15,BF
  219. 3180 'LINE(155+16,15)-STEP(-43,0),PSET,%8,BF
  220. 3190 'LINE(155+16,15)-STEP(0,-11),PSET,%8,BF
  221. 3200 MSX=112+16-8:MSY=4:MEX=171:MEY=15:S$="":GOSUB *PSWT
  222. 3210 DEF FONT "システム   16ドット"
  223. 3220 SYMBOL(114+16,6),"SPOIT",1,.5!,7
  224. 3230 DEF FONT "システム   12ドット"
  225. 3240 WID&(3)=WID&(2)+1426
  226. 3250 GET@A(0,0)-(WWX(3),WWY(3)),WIN&,WID&(3)
  227. 3260 CLS
  228. 3270 '4:ファイルセレクター
  229. 3280 LINE(0,0)-(639,479),PSET,%7,BF
  230. 3290 WX(4)=0:WY(4)=0:WWX(4)=231-24:WWY(4)=20+8*18-1-4:WN=4:GOSUB *PWIN
  231. 3300 GOSUB *WWAK
  232. 3310 SYMBOL(21,5),"",.75!,.75!,%8
  233. 3320 SYMBOL(20,4),"",.75!,.75!,7
  234. 3330 LINE(4,4)-STEP(11,0),PSET,%15,BF
  235. 3340 LINE(4,4)-STEP(0,11),PSET,%15,BF
  236. 3350 LINE(15,15)-STEP(-11,0),PSET,%8,BF
  237. 3360 LINE(15,15)-STEP(0,-11),PSET,%8,BF
  238. 3370 MSX=8:MSY=20:MEX=MSX+191:MEY=MSY+15:GOSUB *PBTN
  239. 3380 'SYMBOL(13,23),"…S\PATTERN\HDT\MONSTAR\KINTAN\",.75!,.75!,%8
  240. 3390 'SYMBOL(12,22),"…S\PATTERN\HDT\MONSTAR\KINTAN\",.75!,.75!,7
  241. 3400 MSX=8:MSY=40:MEX=MSX+95:MEY=MSY+87:GOSUB *PBTN
  242. 3410 SYMBOL(13,45),"DRIVE",.75!,.75!,%8
  243. 3420 SYMBOL(12,44),"DRIVE",.75!,.75!,7
  244. 3430 DRL$="ABDEFGHIJKLMNOPQ"
  245. 3440 FOR J=0 TO 15
  246. 3450   MSX=12+(J MOD 4)*22:MSY=60+(J\4)*16:MEX=MSX+21:MEY=MSY+15:S$=MID$(DRL$,J+1,1):GOSUB *PSWT
  247. 3460 NEXT 'パス31文字 ファイル4段
  248. 3470 MSX=112:MSY=40:MEX=MSX+14*6+4-1:MEY=MSY+10:GOSUB *PBTN
  249. 3480 LINE(112,51)-STEP(14*6+4-1,16*4+1),PSET,7,BF
  250. 3490 MSX=112:MSY=144-28+1:MEX=MSX+14*6+4-1:MEY=MSY+10:GOSUB *PBTN
  251. 3500 S$="実行":MSX=112+20:MEX=MSX+31:MSY=160-24:MEY=MSY+15:GOSUB *PTOP
  252. 3510 S$="取消":MSX=112+20+36:MEX=MSX+31:MSY=160-24:MEY=MSY+15:GOSUB *PTOP
  253. 3520 MSX=8:MEX=MSX+69+6:MSY=160-24:MEY=MSY+15:GOSUB *PBTN
  254. 3530 'MJX=10:MJY=162-24:MJB=7:MJC=15:MJL=12:MJM=12:GOSUB *MOJI_IN
  255. 3540 'SYMBOL(114,52),"<<親ディレクトリ >>",.75!,.75!,%14
  256. 3550 'SYMBOL(114,65),"<FILETEST    >",.75!,.75!,%14
  257. 3560 'SYMBOL(114,78)," FILETEST.TXT",.75!,.75!,%14
  258. 3570 'SYMBOL(114,91)," FILETEST.TXT",.75!,.75!,%14
  259. 3580 'SYMBOL(114,104)," FILETEST.TXT",.75!,.75!,%14
  260. 3590 'LINE(114,64)-STEP(14*6-1,12),XOR,%1,BF
  261. 3600 WID&(4)=WID&(3)+2024
  262. 3610 GET@A(0,0)-(WWX(4),WWY(4)),WIN&,WID&(4)':STOP
  263. 3620 CLS
  264. 3630 '5:ウインドーウインドー
  265. 3640 LINE(0,0)-(639,479),PSET,%7,BF
  266. 3650 WX(5)=0:WY(5)=0:WWX(5)=6+6+30*3-2-1:WWY(5)=20+8+16+2+16-1:WN=5:GOSUB *PWIN
  267. 3660 GOSUB *WWAK
  268. 3670 SYMBOL(21,5),"WindowINFO =",.75!,.75!,%8
  269. 3680 SYMBOL(20,4),"WindowINFO =",.75!,.75!,7
  270. 3690 LINE(4,4)-STEP(11,0),PSET,%15,BF
  271. 3700 LINE(4,4)-STEP(0,11),PSET,%15,BF
  272. 3710 LINE(15,15)-STEP(-11,0),PSET,%8,BF
  273. 3720 LINE(15,15)-STEP(0,-11),PSET,%8,BF
  274. 3730 DRL$="Ma.Ed.Sc.Pa."
  275. 3740 FOR J=0 TO 5
  276. 3750   MSX=6+(J MOD 3)*30:MSY=20+(J\3)*18:MEX=MSX+27:MEY=MSY+15:S$=MID$(DRL$,J*3+1,3):GOSUB *PTOP
  277. 3760 NEXT
  278. 3770 WID&(5)=WID&(4)+4240
  279. 3780 GET@A(0,0)-(WWX(5),WWY(5)),WIN&,WID&(5)
  280. 3790 '6:スペシャル
  281. 3800 LINE(0,0)-(639,479),PSET,%7,BF
  282. 3810 WX(6)=0:WY(6)=0:WWX(6)=93:WWY(6)=20+8+16+2+16-1:WN=6:GOSUB *PWIN
  283. 3820 GOSUB *WWAK
  284. 3830 SYMBOL(21,5),"スペシャル ",.75!,.75!,%8
  285. 3840 SYMBOL(20,4),"スペシャル ",.75!,.75!,7
  286. 3850 LINE(4,4)-STEP(11,0),PSET,%15,BF
  287. 3860 LINE(4,4)-STEP(0,11),PSET,%15,BF
  288. 3870 LINE(15,15)-STEP(-11,0),PSET,%8,BF
  289. 3880 LINE(15,15)-STEP(0,-11),PSET,%8,BF
  290. 3890 MSX=6:MSY=20:MEX=16+12*6-1:MEY=35:S$="CD Player":GOSUB *PSWT
  291. 3900 MSX=6:MSY=38:MEX=16+12*6-1:MEY=53:S$="EUP  Player":GOSUB *PSWT
  292. 3910 WID&(6)=WID&(5)+1000
  293. 3920 GET@A(0,0)-(WWX(6),WWY(6)),WIN&,WID&(6)
  294. 3930 '7:CD
  295. 3940 LINE(0,0)-(639,479),PSET,%7,BF
  296. 3950 WX(7)=0:WY(7)=0:WWX(7)=125:WWY(7)=20+34+8-1:WN=7:GOSUB *PWIN
  297. 3960 GOSUB *WWAK
  298. 3970 SYMBOL(21,5),"CD Player =====",.75!,.75!,%8
  299. 3980 SYMBOL(20,4),"CD Player =====",.75!,.75!,7
  300. 3990 LINE(4,4)-STEP(11,0),PSET,%15,BF
  301. 4000 LINE(4,4)-STEP(0,11),PSET,%15,BF
  302. 4010 LINE(15,15)-STEP(-11,0),PSET,%8,BF
  303. 4020 LINE(15,15)-STEP(0,-11),PSET,%8,BF
  304. 4030 MEX=6:MEY=20:MSX=32+5:MSY=34+19:GOSUB *PBTN
  305. 4040 'SYMBOL(11,25),"00",1.5!,1.5!,7
  306. 4050 'SYMBOL(10,24),"00",1.5!,1.5!,7
  307. 4060 MSX=42:MSY=20:MEX=42+8+30-1:MEY=15+20:S$=" REW":GOSUB *PTOP
  308. 4070 MSX=82:MSY=20:MEX=82+8+30-1:MEY=15+20:S$=" F F":GOSUB *PTOP
  309. 4080 MSX=42:MSY=38:MEX=42+8+30-1:MEY=15+38:S$="PLAY":GOSUB *PSWT
  310. 4090 MSX=82:MSY=38:MEX=82+8+30-1:MEY=15+38:S$=" STOP":GOSUB *PBTN
  311. 4100 SYMBOL(MSX+2,MSY+3),S$,.75!,.75!,%8
  312. 4110 SYMBOL(MSX+2,MSY+2),S$,.75!,.75!,7
  313. 4120 WID&(7)=WID&(6)+750
  314. 4130 GET@A(0,0)-(WWX(7),WWY(7)),WIN&,WID&(7)
  315. 4140 '8:EUP
  316. 4150 LINE(0,0)-(639,479),PSET,%7,BF
  317. 4160 WX(8)=0:WY(8)=0:WWX(8)=89:WWY(8)=20+34+8-1:WN=8:GOSUB *PWIN
  318. 4170 GOSUB *WWAK
  319. 4180 SYMBOL(21,5),"EUP Player",.75!,.75!,%8
  320. 4190 SYMBOL(20,4),"EUP Player",.75!,.75!,7
  321. 4200 LINE(4,4)-STEP(11,0),PSET,%15,BF
  322. 4210 LINE(4,4)-STEP(0,11),PSET,%15,BF
  323. 4220 LINE(15,15)-STEP(-11,0),PSET,%8,BF
  324. 4230 LINE(15,15)-STEP(0,-11),PSET,%8,BF
  325. 4240 MSX=6:MSY=20:MEX=6+8+30-1:MEY=15+20:S$="FILE":GOSUB *PSWT
  326. 4250 MSX=46:MSY=20:MEX=46+8+30-1:MEY=15+20:S$="LOOP":GOSUB *PSWT
  327. 4260 MSX=6:MSY=38:MEX=6+8+30-1:MEY=15+38:S$="PLAY":GOSUB *PSWT
  328. 4270 MSX=46:MSY=38:MEX=46+8+30-1:MEY=15+38:S$=" STOP":GOSUB *PBTN
  329. 4280 SYMBOL(MSX+2,MSY+3),S$,.75!,.75!,%8
  330. 4290 SYMBOL(MSX+2,MSY+2),S$,.75!,.75!,7
  331. 4300 WID&(8)=WID&(7)+1000
  332. 4310 GET@A(0,0)-(WWX(8),WWY(8)),WIN&,WID&(8)
  333. 4320 GOSUB *M_ON'END
  334. 4330 RETURN
  335. 4340 *MOVE_WIN
  336. 4350  'IF WN=3 THEN FOR PA_=0 TO 15:SPRITE 0,PA_,0:NEXT
  337. 4360  GOSUB *WIN_OFF:MBX=MOUSE(0)-WX(WN):MBY=MOUSE(1)-WY(WN)
  338. 4370  LINE(WX(WN),WY(WN))-STEP(WWX(WN),WWY(WN)),XOR,7,B
  339. 4380  MMMX=MOUSE(0):MMMY=MOUSE(1)
  340. 4390  IF MOUSE(2,0)=0 THEN 4430 ELSE IF MMMX<>MOUSE(0) OR MMMY<>MOUSE(1) THEN ELSE 4390
  341. 4400  LINE(WX(WN),WY(WN))-STEP(WWX(WN),WWY(WN)),XOR,7,B
  342. 4410  WX(WN)=MOUSE(0)-MBX:WY(WN)=MOUSE(1)-MBY
  343. 4420  GOTO 4370
  344. 4430  LINE(WX(WN),WY(WN))-STEP(WWX(WN),WWY(WN)),XOR,7,B
  345. 4440  GOSUB *XY_CHK
  346. 4450  GOSUB *WIN_ON
  347. 4460 RETURN
  348. 4470 *WWAK
  349. 4480  MSX=WX(WN)+2:MSY=WY(WN)+2:MEX=MSX+WWX(WN)-5:MEY=MSY+15:GOSUB *PBTN
  350. 4490 RETURN
  351. 4500 '
  352. 4510 *PWIN
  353. 4520 LINE(0,0)-STEP(WWX(WN),WWY(WN)),PSET,%7,BF
  354. 4530 LINE(0,0)-(WWX(WN),0),PSET,%15
  355. 4540 LINE(0,0)-(0,WWY(WN)),PSET,%15
  356. 4550 LINE(WWX(WN),WWY(WN))-(WWX(WN),0),PSET,%8
  357. 4560 LINE(WWX(WN)-1,WWY(WN))-(WWX(WN)-1,1),PSET,%8
  358. 4570 LINE(WWX(WN),WWY(WN))-(0,WWY(WN)),PSET,%8
  359. 4580 LINE(WWX(WN),WWY(WN)-1)-(1,WWY(WN)-1),PSET,%8
  360. 4590 RETURN
  361. 4600 '
  362. 4610 *PTOP
  363. 4620 GOSUB *PBTN
  364. 4630 SYMBOL(MSX+4,MSY+3),S$,.75!,.75!,%8
  365. 4640 SYMBOL(MSX+4,MSY+2),S$,.75!,.75!,7
  366. 4650 RETURN
  367. 4660 '
  368. 4670 *PBTN
  369. 4680 LINE(MSX,MSY)-(MEX,MEY),PSET,%7,BF
  370. 4690 CONNECT(MSX,MEY)-(MSX,MSY)-(MEX,MSY),7
  371. 4700 CONNECT(MSX,MEY)-(MEX,MEY)-(MEX,MSY),%8
  372. 4710 RETURN
  373. 4720 '
  374. 4730 *PSWT
  375. 4740 GOSUB *PBTN
  376. 4750 LINE(MSX+4,MSY+2)-(MSX+7,MEY-2),PSET,%14,BF
  377. 4760 LINE(MSX+5,MSY+3)-(MSX+6,MEY-3),PSET,%8,BF
  378. 4770 SYMBOL(MSX+13,MSY+3),S$,.75!,.75!,%8
  379. 4780 SYMBOL(MSX+12,MSY+2),S$,.75!,.75!,7
  380. 4790 RETURN
  381. 4800 '
  382. 4810 *SWT_ON_G
  383. 4820  LINE(MSX+5,MSY+3)-(MSX+6,MEY-3),PSET,4,BF
  384. 4830 RETURN
  385. 4840 *SWT_ON_R
  386. 4850  LINE(MSX+5,MSY+3)-(MSX+6,MEY-3),PSET,2,BF
  387. 4860 RETURN
  388. 4870 *SWT_OFF
  389. 4880  LINE(MSX+5,MSY+3)-(MSX+6,MEY-3),PSET,%8,BF
  390. 4890 RETURN
  391. 4900 *BTN_ON
  392. 4910 CONNECT(MSX,MEY)-(MSX,MSY)-(MEX,MSY),%8
  393. 4920 CONNECT(MSX,MEY)-(MEX,MEY)-(MEX,MSY),7
  394. 4930 RETURN
  395. 4940 *BTN_OFF
  396. 4950 CONNECT(MSX,MEY)-(MSX,MSY)-(MEX,MSY),7
  397. 4960 CONNECT(MSX,MEY)-(MEX,MEY)-(MEX,MSY),%8
  398. 4970 RETURN
  399. 4980 *WINO 'WN
  400. 4990   GOSUB *XY_CHK
  401. 5000   GET@A(WX(WN),WY(WN))-(WX(WN)+WWX(WN),WY(WN)+WWY(WN)),WBC&,WID&(WN)
  402. 5010   PUT@A(WX(WN),WY(WN))-(WX(WN)+WWX(WN),WY(WN)+WWY(WN)),WIN&,PSET,,,,WID&(WN)
  403. 5020   GOSUB *SWT_SPOT
  404. 5030 RETURN
  405. 5040 *WIN_ON 'WN
  406. 5050   GOSUB *XY_CHK
  407. 5060   GET@A(WX(WN),WY(WN))-(WX(WN)+WWX(WN),WY(WN)+WWY(WN)),WBC&,WID&(WN)
  408. 5070   PUT@A(WX(WN),WY(WN))-(WX(WN)+WWX(WN),WY(WN)+WWY(WN)),WIN&,PSET,,,,WID&(WN)
  409. 5080   GOSUB *SWT_SPOT
  410. 5090   WIN=WIN+1
  411. 5100   WIF(WIN)=WN
  412. 5110 RETURN
  413. 5120 *ALL_WINC
  414. 5130  IF WIN<>-1 THEN ELSE RETURN
  415. 5140  GOSUB *M_OFF
  416. 5150  FOR W_=WIN TO 0 STEP -1:WN=WIF(W_):GOSUB *WINC:NEXT
  417. 5160  GOSUB *M_ON
  418. 5170 RETURN
  419. 5180 *ALL_WINO
  420. 5190  IF WIN<>-1 THEN ELSE RETURN
  421. 5200  GOSUB *M_OFF
  422. 5210  FOR W_=0 TO WIN STEP 1:WN=WIF(W_):GOSUB *WINO:NEXT
  423. 5220  GOSUB *M_ON
  424. 5230 RETURN
  425. 5240 *CC_SET
  426. 5250   GOSUB *M_OFF:FOR I___=0 TO 15:LINE(0,0)-(2^(GB-1)-1,2^(GB-1)-1),PSET,%I___,BF:GET@A(1008,464)-(1023,479),DM&:DEF SPRITE 0,256+I___,DM&,0:NEXT:GOSUB *M_ON
  427. 5260 RETURN
  428. 5270 '
  429. 5280 *XY_CHK
  430. 5290  IF WN=3 THEN *XY_CHK2
  431. 5300  IF WX(WN)<0 THEN WX(WN)=0
  432. 5310  IF WY(WN)<0 THEN WY(WN)=0
  433. 5320  IF WX(WN)+WWX(WN)>639 THEN WX(WN)=639-WWX(WN)
  434. 5330  IF WY(WN)+WWY(WN)>479 THEN WY(WN)=479-WWY(WN)
  435. 5340 RETURN
  436. 5350 *XY_CHK2
  437. 5360   WX(WN)=(WX(WN)\(2*GB))*(2*GB):WY(WN)=((WY(WN)+4)\(2*GB))*(2*GB)-4
  438. 5370   IF WX(WN)<80 THEN WX(WN)=80
  439. 5380   IF WX(WN)>528-16*4 THEN WX(WN)=528-16*4
  440. 5390   IF WY(WN)<12 THEN WY(WN)=12
  441. 5400   IF WY(WN)>380 THEN WY(WN)=380
  442. 5410 RETURN
  443. 5420 '
  444. 5430 *SWT_SPOT'各ウインドー毎のスイッチON/OFF
  445. 5440  ON WN+1 GOSUB *W0,*W1,*W2,*W3,5460,*W5,5460,*W7,*W8
  446. 5450 RETURN
  447. 5460 RETURN
  448. 5470 *W0
  449. 5480  MSX=WX(0)+6+42*(MAIN MOD 3):MSY=WY(0)+20+18*(MAIN\3):MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  450. 5490 RETURN
  451. 5500 *W1
  452. 5510  MSX=WX(1)+6+42*(PPEN MOD 4):MSY=WY(1)+20+18*(PPEN\4):MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  453. 5520 RETURN
  454. 5530 *W2
  455. 5540  IF GB=1 THEN MSX=WX(2)+6:MSY=WY(2)+20:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  456. 5550  IF GB<>1 THEN MSX=WX(2)+6+42*(GB\2)+(GB=8)*42+(GB=16)*84:MSY=WY(2)+20:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  457. 5560  IF HENG THEN MSX=WX(2)+90:MSY=WY(2)+38:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_G
  458. 5570  IF BACG THEN MSX=WX(2)+132:MSY=WY(2)+38:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_G
  459. 5580 RETURN
  460. 5590 *W3
  461. 5600  IF SPOIT THEN MSX=WX(3)+112+16-8:MSY=WY(3)+4:MEX=171:MEY=15:GOSUB *SWT_ON_R
  462. 5610  LINE(WX(3)+17+(PAL MOD 4)*16,WY(3)+21+(PAL\4)*16)-STEP(14,14),PSET,7,B,&H6666
  463. 5620  LINE(WX(3)+17+(PAL MOD 4)*16,WY(3)+21+(PAL\4)*16)-STEP(14,14),PSET,%14,B,&H9999
  464. 5630  RGB=PL(PAL):GOSUB *RGB_BUNKAI
  465. 5640  SYMBOL(WX(3)+156,WY(3)+27),RIGHT$(STR$(R),2),.75!,.75!,%14:IF R<>0 THEN LINE(WX(3)+108,WY(3)+27)-STEP(R,11),PSET,2,BF
  466. 5650  SYMBOL(WX(3)+156,WY(3)+47),RIGHT$(STR$(G),2),.75!,.75!,%14:IF G<>0 THEN LINE(WX(3)+108,WY(3)+47)-STEP(G,11),PSET,4,BF:
  467. 5660  SYMBOL(WX(3)+156,WY(3)+67),RIGHT$(STR$(B),2),.75!,.75!,%14:IF B<>0 THEN LINE(WX(3)+108,WY(3)+67)-STEP(B,11),PSET,1,BF:
  468. 5670  FOR PA_=0 TO 15:SPR_N=PA_:SPR_X=(WX(3)-96)\(GB*2)+(PA_ MOD 4 +1)*(8\GB):SPR_Y=(WY(3)+20)\(GB*2)+(PA_\4)*(8\GB):GOSUB *SPR_XY:SPRITE 0,PA_,1:NEXT
  469. 5680 RETURN
  470. 5690 *W5
  471. 5700  'FOR W5=0 TO 3
  472. 5710   'IF SEARCH(WIF,W5)<>-1 AND SEARCH(WIF,W5)<=WIN THEN MSX=WX(5)+6+(W5 MOD 3)*30:MSY=WY(5)+20+(W5\3)*18:MEX=MSX+27:MEY=MSY+15:GOSUB *SWT_ON_G
  473. 5720  'NEXT
  474. 5730 RETURN
  475. 5740 *W7
  476. 5750  ON ERROR GOTO *E:ER=0:CDSTAT CDS:ON ERROR GOTO *MERR
  477. 5760  LINE(WX(7)+7,WY(7)+21)-(WX(7)+32+4,WY(7)+34+18),PSET,%14,BF
  478. 5770  IF ER=53 THEN CDS(1)=0
  479. 5780  IF ER=0 THEN SYMBOL(WX(7)+11,WY(7)+25),RIGHT$(STR$(CDS(5)),2),1.5!,1.5!,4
  480. 5790  IF CDS(1) THEN MSX=WX(7)+42:MSY=WY(7)+38:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *SWT_ON_R
  481. 5800 RETURN
  482. 5810 *W8
  483. 5820  IF PLAY(0) THEN MSX=WX(8)+6:MSY=WY(8)+38:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *SWT_ON_R
  484. 5830  IF LOOP THEN MSX=WX(8)+46:MSY=WY(8)+20:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *SWT_ON_G
  485. 5840 RETURN
  486. 5850 '
  487. 5860 *WIN_OFF 'WN
  488. 5870   IF WN=3 THEN FOR PA_=0 TO 15:SPRITE 0,PA_,0:NEXT
  489. 5880   PUT@A(WX(WN),WY(WN))-(WX(WN)+WWX(WN),WY(WN)+WWY(WN)),WBC&,PSET,,,,WID&(WN)
  490. 5890   WIF(WIN)=-1
  491. 5900   WIN=WIN-1
  492. 5910 RETURN
  493. 5920 *WINC 'WN
  494. 5930  IF WN=3 THEN FOR PA_=0 TO 15:SPRITE 0,PA_,0:NEXT
  495. 5940 PUT@A(WX(WN),WY(WN))-(WX(WN)+WWX(WN),WY(WN)+WWY(WN)),WBC&,PSET,,,,WID&(WN):
  496. 5950 RETURN
  497. 5960 *CHK
  498. 5970  RET=0
  499. 5980  IF A2>=X1 AND A1<=X2 AND B2>=Y1 AND B1<=Y2 THEN RET=-1
  500. 5990  IF A2<=X1 AND A1>=X2 AND B2<=Y1 AND B1>=Y2 THEN RET=-1
  501. 6000 RETURN
  502. 6010 *WTOP
  503. 6020   IF WIF(WIN)=WN THEN RETURN
  504. 6030   YUSEN=SEARCH(WIF,WN)
  505. 6040   MYUSEN=YUSEN
  506. 6050   MWN=WN
  507. 6060   FOR WI=0 TO 99:WST(WI)=-2:NEXT
  508. 6070   STC=0
  509. 6080   FOR WI=YUSEN+1 TO WIN
  510. 6090     X1=WX(WIF(YUSEN)):Y1=WY(WIF(YUSEN)):X2=X1+WWX(WIF(YUSEN)):Y2=Y1+WWY(WIF(YUSEN))
  511. 6100     A1=WX(WIF(WI)):B1=WY(WIF(WI)):A2=A1+WWX(WIF(WI)):B2=B1+WWY(WIF(WI))
  512. 6110     GOSUB *CHK
  513. 6120     IF RET=-1 THEN WST(STC)=WI:STC=STC+1
  514. 6130   NEXT
  515. 6140   YUSEN=YUSEN+1
  516. 6150   IF YUSEN=WIN THEN *WLOOP_END
  517. 6160   IF SEARCH(WST,YUSEN)=-1 THEN 6140
  518. 6170   GOTO 6080
  519. 6180   *WLOOP_END
  520. 6190   ERASE WWS:DIM WWS(99)
  521. 6200   FOR WI=MYUSEN+1 TO WIN
  522. 6210     IF SEARCH(WST,WI)<>-1 THEN WWS(WI)=1
  523. 6220   NEXT
  524. 6230   GOSUB *M_OFF
  525. 6240   FOR WI=WIN TO MYUSEN+1 STEP -1
  526. 6250     IF WWS(WI)=1 THEN WN=WIF(WI):IF STC THEN GOSUB *WINC
  527. 6260   NEXT
  528. 6270   WN=MWN:IF STC THEN GOSUB *WINC
  529. 6280   MWIN=WIN
  530. 6290   FOR WI=MYUSEN+1 TO MWIN
  531. 6300     IF WWS(WI)=1 THEN WN=WIF(WI):IF STC THEN GOSUB *WIN_ON:WIF(WI)=-1 ELSE WIN=WIN+1:WIF(WIN)=WN:WIF(WI)=-1
  532. 6310   NEXT
  533. 6320   WN=MWN:IF STC THEN GOSUB *WIN_ON:WIF(MYUSEN)=-1 ELSE WIN=WIN+1:WIF(WIN)=WN:WIF(MYUSEN)=-1
  534. 6330   GOSUB *M_ON
  535. 6340   GOSUB *WIF_COL
  536. 6350   'IF STC=0 THEN ELSE WHILE MOUSE(2,0):WEND
  537. 6360 RETURN
  538. 6370 *WIF_COL
  539. 6380  WI=0
  540. 6390  FOR I=0 TO WIN
  541. 6400    IF WIF(I)<>-1 THEN WIF(WI)=WIF(I):WI=WI+1
  542. 6410  NEXT
  543. 6420  WIN=WI-1
  544. 6430 RETURN
  545. 6440 '
  546. 6450 *ON_MOMORY_DATA
  547. 6460  'MOUSE PAT No.0 [ノーマル ]
  548. 6470   DATA 0000,0000,0000,0000,0000,0000,0040,0000,0060,0000,0030,0000
  549. 6480   DATA 0058,0000,003C,0000,005E,0000,002F,0000,805F,0000,002F,0000
  550. 6490   DATA 0054,0000,0046,0000,0002,0000,0003,0000,0001,0000,0000,0000
  551. 6500   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  552. 6510   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  553. 6520   DATA 0000,0000,0000,0000
  554. 6530  'MOUSE PAT No.1 [時計   ]
  555. 6540   DATA 0000,0000,0000,0000,0700,0080,0000,2000,0000,0000,0028,1000
  556. 6550   DATA 0F30,10C0,7C00,10F8,FC00,00FC,DF01,00EE,FD03,00FF,FD07,80FF
  557. 6560   DATA FD06,80FD,FD07,80FF,FD0F,C0FF,FD0F,C0FF,FC09,40FE,FC09,400E
  558. 6570   DATA FF0F,C0FF,FF0F,C0FF,FF07,80FF,FF06,80FD,FF07,80FF,FF03,00FF
  559. 6580   DATA DF01,00EE,FC00,00FC,7C00,00F8,0F00,00C0,0000,0000,0030,3000
  560. 6590   DATA 0000,0000,0000,0000
  561. 6600  'MOUSE PAT No.2 [鉛筆   ]
  562. 6610   DATA 0000,0000,0000,0000,001C,0000,0038,0000,007B,0000,8063,0000
  563. 6620   DATA C06D,0000,E00E,0000,7017,0000,B80B,0000,DC05,0000,EC02,0000
  564. 6630   DATA 7801,0000,B000,0000,6000,0000,0000,0000,0000,0000,0000,0000
  565. 6640   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  566. 6650   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  567. 6660   DATA 0000,0000,0000,0000
  568. 6670  'MOUSE PAT No.3 [手    ]
  569. 6680   DATA 0000,0000,0000,0000,C000,0000,D806,0000,D806,0000,DB06,0000
  570. 6690   DATA DB06,0000,DB06,0000,DB66,0000,DB76,0000,FF37,0000,FF37,0000
  571. 6700   DATA FF3F,0000,FF1F,0000,FE1F,0000,FE0F,0000,FC07,0000,F001,0000
  572. 6710   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  573. 6720   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  574. 6730   DATA 0000,0000,0000,0000
  575. 6740  'MOUSE PAT No.4 [ピンセット]
  576. 6750   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  577. 6760   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  578. 6770   DATA 0000,0000,0000,0000,0000,0000,3E00,0000,E200,0000,8203,0000
  579. 6780   DATA 020E,0000,0618,0000,0430,0000,0C60,0000,0840,0000,1840,0000
  580. 6790   DATA 1040,0000,3040,0000,6000,0000,C000,0000,8007,0000,0000,0000
  581. 6800   DATA 0000,0000,0000,0000
  582. 6810  'MOUSE PAT No.5 [スポイト ]
  583. 6820   DATA 0000,0000,0000,0000,0000,0000,0020,0000,0010,0000,0008,0000
  584. 6830   DATA 0004,0000,0001,0000,8003,0000,C001,0000,BC00,0000,7E00,0000
  585. 6840   DATA 7F00,0000,7F00,0000,4F00,0000,2200,0000,1C00,0000,0000,0000
  586. 6850   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  587. 6860   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  588. 6870   DATA 0000,0000,0000,0000
  589. 6880  'MOUSE PAT No.6 [指    ]
  590. 6890   DATA 0000,0000,0000,0000,0060,0000,0060,0000,0030,0000,0030,0000
  591. 6900   DATA 0018,0000,0018,0000,400D,0000,F00D,0000,F807,0000,F817,0000
  592. 6910   DATA F817,0000,F817,0000,F81F,0000,F81F,0000,F80F,0000,F007,0000
  593. 6920   DATA E003,0000,4000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  594. 6930   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  595. 6940   DATA 0000,0000,0000,0000
  596. 6950  'MOUSE PAT No.7 [筆    ]
  597. 6960   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,4000,0000
  598. 6970   DATA 6000,0000,F003,0000,F003,0000,F807,0000,F806,0000,2007,0000
  599. 6980   DATA CE01,0000,1F00,0000,1400,0080,0800,0040,0000,0020,0000,0010
  600. 6990   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  601. 7000   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  602. 7010   DATA 0000,0000,0000,0000
  603. 7020  'MOUSE PAT No.8 [カッター ]
  604. 7030   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  605. 7040   DATA 0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000
  606. 7050   DATA 0000,0030,0000,0078,0000,0098,0100,0010,0200,0020,0400,0040
  607. 7060   DATA 0800,0080,1100,0000,2A00,0000,5400,0000,8800,0000,1001,0000
  608. 7070   DATA 2001,0000,C000,0000,0000,0000,0000,0000,0008,0000,0010,0000
  609. 7080   DATA 0000,0000,0000,0000
  610. 7090  'MOUSE AND No.0 [ノーマル ]
  611. 7100   DATA FFFF,FFFF,FF7F,FFFF,FF3F,FFFF,FF1F,FFFF,FF0F,FFFF,FF07,FFFF
  612. 7110   DATA FF03,FFFF,FF01,FFFF,FF00,FFFF,7F00,FFFF,3F00,FFFF,1F00,FFFF
  613. 7120   DATA 1F00,FFFF,7F00,FFFF,FF00,FFFF,7F10,FFFF,7F38,FFFF,7FF8,FFFF
  614. 7130   DATA 7FFC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  615. 7140   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  616. 7150   DATA FFFF,FFFF,FFFF,FFFF
  617. 7160  'MOUSE AND No.1 [時計   ]
  618. 7170   DATA FFFF,FFFF,78F0,3F78,30C0,0F30,18C0,0F60,3C80,07F0,E080,071C
  619. 7180   DATA 8081,0706,0084,8700,008C,C700,00D8,6F00,00F8,7F00,00F0,3F00
  620. 7190   DATA 00F0,3F00,00E0,1F00,00E0,1F00,00E0,1F00,00E0,1F00,00E0,1F00
  621. 7200   DATA 00E0,1F00,00E0,1F00,00E0,1F00,00E0,1F00,00F0,3F00,00F0,3F00
  622. 7210   DATA 00F8,7F00,00F8,7F00,00FC,FF00,00FE,FF01,8084,8704,E000,031C
  623. 7220   DATA FF00,03FC,FFFF,FFFF
  624. 7230  'MOUSE AND No.2 [鉛筆   ]
  625. 7240   DATA FFFF,FFFF,FF01,FFFF,FF00,FFFF,7F00,FFFF,3F00,FFFF,1F00,FFFF
  626. 7250   DATA 0F00,FFFF,0700,FFFF,0300,FFFF,0100,FFFF,0100,FFFF,0180,FFFF
  627. 7260   DATA 01C0,FFFF,01E0,FFFF,01F0,FFFF,03F8,FFFF,07FC,FFFF,0FFE,FFFF
  628. 7270   DATA 1FFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  629. 7280   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  630. 7290   DATA FFFF,FFFF,FFFF,FFFF
  631. 7300  'MOUSE AND No.3 [手    ]
  632. 7310   DATA FFFF,FFFF,3FFF,FFFF,07F8,FFFF,03F0,FFFF,00F0,FFFF,00F0,FF7F
  633. 7320   DATA 00F0,FF7F,0000,FF7F,0000,FF7F,0000,FF7F,0000,FF7F,0080,FF7F
  634. 7330   DATA 0080,FF7F,0080,FF7F,00C0,FF7F,00C0,FFFF,00E0,FFFF,01F0,FFFF
  635. 7340   DATA 07FC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  636. 7350   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  637. 7360   DATA FFFF,FFFF,FFFF,FFFF
  638. 7370  'MOUSE AND No.4 [ピンセット]
  639. 7380   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  640. 7390   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  641. 7400   DATA FFFF,FFFF,FFFF,FFFF,C0FF,FFFF,00FF,FFFF,00FC,FF7F,00F0,FF7F
  642. 7410   DATA 00E0,FF7F,30C0,FF7F,E080,FF7F,E003,FFFF,C007,FFFF,C10F,FFFF
  643. 7420   DATA 810F,FFFF,030F,FFFF,030E,FFFF,0790,FFFF,0FF0,FFFF,1FF8,FFFF
  644. 7430   DATA 3FF8,FFFF,FFFF,FFFF
  645. 7440  'MOUSE AND No.5 [スポイト ]
  646. 7450   DATA FFFF,FFFF,FF3F,FFFF,FF1F,FFFF,FF8F,FFFF,FF87,FFFF,FF83,FFFF
  647. 7460   DATA FFC0,FFFF,7FE0,FFFF,3FF0,FFFF,01F8,FFFF,00F8,FFFF,00FC,FF7F
  648. 7470   DATA 00FE,FF7F,00FF,FF7F,00FF,FF7F,00FF,FF7F,00FF,FF7F,00FF,FF7F
  649. 7480   DATA 80FF,FFFF,C1FF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  650. 7490   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  651. 7500   DATA FFFF,FFFF,FFFF,FFFF
  652. 7510  'MOUSE AND No.6 [指    ]
  653. 7520   DATA FFFF,FFFF,FF1F,FFFF,FF0F,FFFF,FF0F,FFFF,FF07,FFFF,FF07,FFFF
  654. 7530   DATA FF83,FFFF,BF80,FFFF,0F80,FFFF,07C0,FFFF,03C0,FFFF,03C0,FFFF
  655. 7540   DATA 03C0,FFFF,03C0,FFFF,03C0,FFFF,03C0,FFFF,01C0,FFFF,01E0,FFFF
  656. 7550   DATA 03E0,FFFF,07E0,FFFF,0FF0,FFFF,1FFC,FFFF,FFFF,FFFF,FFFF,FFFF
  657. 7560   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  658. 7570   DATA FFFF,FFFF,FFFF,FFFF
  659. 7580  'MOUSE AND No.7 [筆    ]
  660. 7590   DATA FFFF,FFFF,FF3F,FFFF,FF00,FFFF,3F00,FFFF,1F00,FFFF,0F00,FFFF
  661. 7600   DATA 0700,FFFF,0780,FFFF,0380,FFFF,03C0,FFFF,03C0,FFFF,00E0,FFFF
  662. 7610   DATA 00F0,FF7F,00FC,FF3F,C0FF,FF1F,C0FF,FF0F,E0FF,FF07,F0FF,FF03
  663. 7620   DATA F8FF,FF03,FCFF,FF03,FEFF,FF07,FFFF,FF0F,FFFF,FFFF,FFFF,FFFF
  664. 7630   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  665. 7640   DATA FFFF,FFFF,FFFF,FFFF
  666. 7650  'MOUSE AND No.8 [カッター ]
  667. 7660   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  668. 7670   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FF87
  669. 7680   DATA FFFF,FF03,FEFF,FF03,FCFF,FF03,F8FF,FF03,F0FF,FF07,E0FF,FF0F
  670. 7690   DATA C0FF,FF1F,80FF,FF3F,00FF,FF7F,00FE,FFFF,01FC,FFFF,03FC,FFFF
  671. 7700   DATA 07FC,FFFF,0FF8,FFFF,1FF0,FFFF,FFE0,FFFF,FFC1,FFFF,FF83,FFFF
  672. 7710   DATA FF07,FFFF,FFFF,FFFF
  673. 7720  'MOUSE AND No.9 [色付き矢 ]
  674. 7730   DATA FFFF,FFFF,FF7F,FFFF,FF3F,FFFF,FF1F,FFFF,FF0F,FFFF,FF07,FFFF
  675. 7740   DATA FF03,FFFF,FF01,FFFF,FF00,FFFF,7F00,FFFF,3F00,FFFF,1F00,FFFF
  676. 7750   DATA 1F00,FFFF,7F00,FFFF,FF00,FFFF,7F10,FFFF,7F38,FF03,7FF8,FF03
  677. 7760   DATA 7FFC,FF03,FFFF,FF03,FFFF,FF03,FFFF,FF03,FFFF,FFFF,FFFF,FFFF
  678. 7770   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  679. 7780   DATA FFFF,FFFF,FFFF,FFFF
  680. 7790  'MOUSE AND No.10[色付き筆 ]
  681. 7800   DATA FFFF,FFFF,FF3F,FFFF,FF00,FFFF,3F00,FFFF,1F00,FFFF,0F00,FFFF
  682. 7810   DATA 0700,FFFF,0780,FFFF,0380,FFFF,03C0,FFFF,03C0,FFFF,00E0,FFFF
  683. 7820   DATA 00F0,FF7F,00FC,FF3F,C0FF,FF1F,C0FF,FF0F,E0FF,FF03,F0FF,FF03
  684. 7830   DATA F8FF,FF03,FCFF,FF03,FEFF,FF03,FFFF,FF03,FFFF,FFFF,FFFF,FFFF
  685. 7840   DATA FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF
  686. 7850   DATA FFFF,FFFF,FFFF,FFFF
  687. 7860  'MOUSE LOCATE DATA
  688. 7870   DATA  0, 0, 15, 15, 0, 1, 9, 11, 3, 27, 0, 1, 0, 1, 0, 1, 0, 30
  689. 7880 '
  690. 7890 'エラー処理ルーチン =メイン=
  691. 7900 '
  692. 7910 *MERR
  693. 7920  SCREEN@0:SPRITE OFF:PALETTE:COLOR 7,0:CLS
  694. 7930  BEEP 1:PRINT USING "致命的なエラー###番が#####行で発生しました。";ERR;ERL
  695. 7940  PRINT "申し訳ございませんが復帰できません。"
  696. 7950  PRINT "リセットスイッチを押すか,本体の電源を切ってください。"
  697. 7960  STOP ON
  698. 7970 GOTO 7970
  699. 7980 '
  700. 7990 '汎用サブルーチン
  701. 8000 '
  702. 8010 *FM_OFF
  703. 8020 'FM音源ミュートルーチン[]{}
  704. 8030  OUT &H4D8,&HB4,2:OUT &H4DA,0,2
  705. 8040  OUT &H4DC,&HB4,2:OUT &H4DE,0,2
  706. 8050  OUT &H4D8,&HB5,2:OUT &H4DA,0,2
  707. 8060  OUT &H4DC,&HB5,2:OUT &H4DE,0,2
  708. 8070  OUT &H4D8,&HB6,2:OUT &H4DA,0,2
  709. 8080  OUT &H4DC,&HB6,2:OUT &H4DE,0,2
  710. 8090 RETURN
  711. 8100 '
  712. 8110 *FONT
  713. 8120 'フォント切り換えルーチン[FOT 0:12 1:16]{}
  714. 8130  IF FOT THEN DEF FONT "システム   16ドット" ELSE DEF FONT "システム   12ドット"
  715. 8140 RETURN
  716. 8150 '
  717. 8160 *進10
  718. 8170 '16進数文字列→10進数実数値変換ルーチン(INT専用)[A$ 入力]{A 出力}
  719. 8180  A&=VAL("&H"+A$)
  720. 8190  A=A&+(A&>32767)*65536
  721. 8200 RETURN
  722. 8210 '
  723. 8220 '0:ノーマル 1:時計 2:鉛筆 3:手 4:ピンセット
  724. 8230 '5:スポイト 6:指 7:筆 8:カッター
  725. 8240 '16:色付きノーマル 17:色付き筆
  726. 8250 *M_PAT':MMPN=MPN
  727. 8260 'マウスカーソルパターン変更ルーチン[MPN マウスパターン番号]{}
  728. 8270  MMMP=MPN
  729. 8280  IF MPN=16 OR MPN=17 THEN MPN=MPN-16:MPC=1 ELSE MPC=0
  730. 8290  FOR I=0 TO 63:MDP(I)=MOP(I,MPN-(MPC=1 AND MPN=1)*6):MDA(I)=MOA(I,MPN+MPC*9):NEXT
  731. 8300  I=MOL(0,MPN-(MPC=1 AND MPN=1)*6):J=MOL(1,MPN-(MPC=1 AND MPN=1)*6)
  732. 8310  LINE(0,480)-STEP(31,31),PSET,%14,BF
  733. 8320  PUT@(0,480)-(31,511),MDP,PSET,7
  734. 8330  IF MPC THEN LINE(16,496)-STEP(5,5),PSET,7,B:LINE(17,497)-STEP(3,3),PSET,%11,BF
  735. 8340  GET@A(0,480)-(31,511),MDAMMY
  736. 8350  MOUSE 6,1,MDA,MDAMMY,I,J
  737. 8360  MPN=MMMP
  738. 8370 RETURN
  739. 8380 '
  740. 8390 *M_INIT
  741. 8400 'マウス初期化ルーチン[]{}
  742. 8410  MOUSE 0
  743. 8420  MPN=0:GOSUB *M_PAT
  744. 8430  MOUSE 3,0,MS1:MOUSE 3,1,MS1
  745. 8440  MOUSE 4,0,0,639,479
  746. 8450  MOUSE 1,320,240,1
  747. 8460 RETURN
  748. 8470 '
  749. 8480 *M_ON
  750. 8490 'マウスカーソル表示[]{}
  751. 8500  GOSUB *M_PAT
  752. 8510  MOUSE 1,MOUSE(0),MOUSE(1),1
  753. 8520 RETURN
  754. 8530 '
  755. 8540 *M_OFF
  756. 8550 'マウスカーソル非表示[]{}
  757. 8560  MOUSE 1,MOUSE(0),MOUSE(1),0
  758. 8570 RETURN
  759. 8580 *MSTOP:MOUSE 4,MOUSE(0),MOUSE(1),MOUSE(0),MOUSE(1):RETURN
  760. 8590 *MFREE:MOUSE 4,0,0,639,479:RETURN
  761. 8600 '
  762. 8610 *N_VIEW
  763. 8620 '16色画面 VRAM最大サイズ ノーマル対応 VIEW/WINDOW []{}
  764. 8630  VIEW(0,0)-(1023,511):WINDOW(0,0)-(1023,511)
  765. 8640 RETURN
  766. 8650 '
  767. 8660 *RGB_GOUSEI
  768. 8670 'R,G,B → RGB ルーチン[R,G,B]{RGB}
  769. 8680  RGB=G*1024+R*32+B
  770. 8690 RETURN
  771. 8700 '
  772. 8710 *RGB_BUNKAI
  773. 8720 'RGB → R,G,B ルーチン[RGB]{RGB}
  774. 8730  G=RGB\1024
  775. 8740  R=(RGB AND &H3FF)\32
  776. 8750  B=(RGB AND &H3FF)MOD 32
  777. 8760 RETURN
  778. 8770 '
  779. 8780 *PRINTER
  780. 8790 'プリンター適切WIDTH設定[]{}
  781. 8800  WIDTH "LPT0:",76
  782. 8810 RETURN
  783. 8820 '
  784. 8830 *PR0
  785. 8840 'プライオリティ変更ルーチン[EGB_CALL&]{EGB&}(EGBCALL.REXを使用) 配列略
  786. 8850  AH=6:AL=0:EDX&=3:RET&=0:GOSUB *EGB_CALL
  787. 8860 RETURN
  788. 8870 '
  789. 8880 *VSYNC
  790. 8890 'VSYNC待ちルーチン[EGB_CALL&]{EGB&}(EGBCALL.REXを使用) 配列略
  791. 8900  AH=4:AL=1:PARA(0)=0:PARA(1)=0:ESI&=VARPTR(PARA(0)):GOSUB *EGB_CALL
  792. 8910 RETURN
  793. 8920 '
  794. 8930 *EGB_INIT
  795. 8940 'EGB初期化[EGB_CALL&,EGB_STACK(),EGB_WORK()]{EGB&}
  796. 8950  EGB&=CALLM(EGB_CALL&,0,VARPTR(EGB_STACK(32867))+1,VARPTR(EGB_WORK(0)),1536)
  797. 8960  IF EGB&<>0 THEN ERROR 120
  798. 8970 RETURN
  799. 8980 '
  800. 8990 *EGB_CALL
  801. 9000 'EGB実行部[EGB_CALL&,AH,AL,EBX&,ECX&,EDX&,ESI&,RET&]{EGB&} 配列略
  802. 9010  RET&=0
  803. 9020  EGB&=CALLM(EGB_CALL&,AH,AL,EBX&,ECX&,EDX&,ESI&,RET&)
  804. 9030  IF EGB&<>0 THEN ERROR 120
  805. 9040 RETURN
  806. 9050 '
  807. 9060 '###################################################################
  808. 9070 '  スプライト画面モード  変更ルーチン  *SCRN_CHANGE
  809. 9080 '        [SCRN_MODE=スクリーンモード(SCREEN@0時は0/SCREEN@1時は1)]
  810. 9090 '        [SCRN_X=X座標表示位置(ドット単位)]
  811. 9100 '###################################################################
  812. 9110   *SCRN_CHANGE
  813. 9120     IF SCRN_MODE=0 THEN RESTORE *SCRN_DATA0
  814. 9130     IF SCRN_MODE=1 THEN RESTORE *SCRN_DATA1
  815. 9140     READ SCRN_AD,SCRN_DT$
  816. 9150     WHILE SCRN_AD<>99
  817. 9160       OUT &H440,SCRN_AD,2
  818. 9170       OUT &H442,VAL("&H"+SCRN_DT$),2
  819. 9180       READ SCRN_AD,SCRN_DT$
  820. 9190     WEND
  821. 9200     OUT &H440,11,2:OUT &H442,&H008A+SCRN_X*2,2
  822. 9210     OUT &H440,12,2:OUT &H442,&H028A+SCRN_X*2,2
  823. 9220     OUT &H440,22,2:OUT &H442,&H008A+SCRN_X*2,2
  824. 9230   RETURN
  825. 9240 '===================================================================
  826. 9250   *SCRN_DATA0'---------------------------------------------------
  827. 9260     DATA 16,0406, 27,1100, 99,****
  828. 9270   *SCRN_DATA1'---------------------------------------------------
  829. 9280     DATA 00,0060, 01,02C0, 04,031F, 05,0000, 06,0004, 07,0000
  830. 9290     DATA 08,0419, 09,008A, 10,030A, 13,0046, 14,0406, 15,0046
  831. 9300     DATA 16,0406, 18,008A, 25,0058, 26,0000, 27,1111, 29,0002
  832. 9310     DATA 30,0000, 31,0192, 99,****
  833. 9320 '###################################################################
  834. 9330 '
  835. 9340 *MOJI_IN
  836. 9350 '文字列入力ルーチン[MOJ$,MJM,MJX,MJY,MJC,MJB,MJL]{MOJ$}
  837. 9360 '                  (MOJI_COS,MOJI_IN$,MOJI_KNF)
  838. 9370  MOJI_COS=0:WHILE INKEY$<>"":WEND
  839. 9380  *MOJI_M
  840. 9390   LINE(MJX,MJY)-STEP(MJM*6-1,11),PSET,%MJB,BF
  841. 9400   SYMBOL(MJX,MJY),MOJ$,.75!,.75!,%MJC
  842. 9410   LINE(MJX+MOJI_COS*6,MJY)-STEP(1,11),PSET,%MJL,BF
  843. 9420   MOJI_IN$=""
  844. 9430   WHILE MOJI_IN$="":MOJI_IN$=INKEY$:WEND
  845. 9440   ON INSTR(CHR$(13,&H1D,8,&H1C,&H7F),MOJI_IN$) GOTO *MOJI_T,*MOJI_L,*MOJI_B,*MOJI_R,*MOJI_D
  846. 9450   IF (((ASC(MOJI_IN$)>=&H80 AND ASC(MOJI_IN$)<=&H9F) OR ASC(MOJI_IN$)>=&HE0) AND MOJI_KNF=0 ) AND LEN(MOJ$)>=MJM-1 THEN MOJI_IN$=INKEY$:GOTO *MOJI_M
  847. 9460   IF LEN(MOJ$)>=MJM THEN *MOJI_M
  848. 9470   IF ((ASC(MOJI_IN$)>=&H80 AND ASC(MOJI_IN$)<=&H9F) OR ASC(MOJI_IN$)>=&HE0) AND MOJI_KNF=0 THEN MOJI_KNF=ASC(MOJI_IN$):GOTO *MOJI_M
  849. 9480   IF MOJI_KNF THEN MOJ$=LEFT$(MOJ$,MOJI_COS)+CHR$(MOJI_KNF)+MOJI_IN$+MID$(MOJ$,MOJI_COS+1):MOJI_KNF=0:GOTO *MOJI_R ELSE MOJ$=LEFT$(MOJ$,MOJI_COS)+MOJI_IN$+MID$(MOJ$,MOJI_COS+1):MOJI_KNF=0:GOTO *MOJI_R
  850. 9490  GOTO *MOJI_M
  851. 9500  *MOJI_T
  852. 9510   LINE(MJX,MJY)-STEP(MJM*6-1,11),PSET,%MJB,BF
  853. 9520   SYMBOL(MJX,MJY),MOJ$,.75!,.75!,%MJC
  854. 9530   WHILE INKEY$<>"":WEND
  855. 9540 RETURN
  856. 9550  *MOJI_L
  857. 9560   IF MOJI_COS<=0 THEN *MOJI_M
  858. 9570   IF MOJI_COS>=2 THEN IF KTYPE(MID$(MOJ$,MOJI_COS-1,2),1) THEN MOJI_COS=MOJI_COS-2 ELSE MOJI_COS=MOJI_COS-1 ELSE MOJI_COS=MOJI_COS-1
  859. 9580  GOTO *MOJI_M
  860. 9590  *MOJI_R
  861. 9600   IF MOJI_COS>=LEN(MOJ$) THEN *MOJI_M
  862. 9610   IF MOJI_COS<=LEN(MOJ$)-1 THEN IF KTYPE(MID$(MOJ$,MOJI_COS+1,2),1) THEN MOJI_COS=MOJI_COS+2 ELSE MOJI_COS=MOJI_COS+1 ELSE MOJI_COS=MOJI_COS+1
  863. 9620   IF MOJI_COS>=MJM THEN *MOJI_L
  864. 9630  GOTO *MOJI_M
  865. 9640  *MOJI_D
  866. 9650   IF MID$(MOJ$,MOJI_COS+1)="" THEN *MOJI_M
  867. 9660   IF (ASC(MID$(MOJ$,MOJI_COS+1,1))>=&H80 AND ASC(MID$(MOJ$,MOJI_COS+1,1))<=&H9F) OR ASC(MID$(MOJ$,MOJI_COS+1,1))>=&HE0 THEN MOJ$=LEFT$(MOJ$,MOJI_COS)+MID$(MOJ$,MOJI_COS+3) ELSE MOJ$=LEFT$(MOJ$,MOJI_COS)+MID$(MOJ$,MOJI_COS+2)
  868. 9670  GOTO *MOJI_M
  869. 9680  *MOJI_B
  870. 9690   IF MOJI_COS<=0 THEN *MOJI_M
  871. 9700   IF MOJI_COS>=2 THEN IF KTYPE(MID$(MOJ$,MOJI_COS-1,2),1) THEN MOJI_COS=MOJI_COS-2 ELSE MOJI_COS=MOJI_COS-1 ELSE MOJI_COS=MOJI_COS-1
  872. 9710  GOTO *MOJI_D
  873. 9720 '
  874. 9730 *BAN 'GX,GY,GB
  875. 9740  GOSUB *M_OFF
  876. 9750  LINE(96,16)-(96+511,27),PSET,%14,BF
  877. 9760  LINE(612,32)-(623,463),PSET,%14,BF
  878. 9770  FOR I=0 TO 15
  879. 9780    CX=(I*32-GX*2)*GB:CY=(I*32-GY*2)*GB
  880. 9790    IF CX>=0 AND CX<=511 THEN LINE(96+CX,17)-(96+CX,26),PSET,7
  881. 9800    IF CY>=0 AND CY<=431 THEN LINE(613,CY+32)-(622,CY+32),PSET,7
  882. 9810    CX=CX+10:CY=CY+10
  883. 9820    IF CX>=0 AND CX<=511-12 THEN SYMBOL(96+CX,17),AKCNV$(HEX$(I)),.75!,.75!,7
  884. 9830    IF CY>=0 AND CY<=431-12 THEN SYMBOL(612,CY+32),AKCNV$(HEX$(I)),.75!,.75!,7
  885. 9840  NEXT
  886. 9850  LINE(8,208)-STEP(63,63),PSET,%14,BF
  887. 9860  LINE(8+GX/4,208+GY/4)-STEP(64/GB-1,54/GB-1),PSET,7,B
  888. 9870  GOSUB *M_ON
  889. 9880  SPRITE 6,,-GX,-GY+16\GB
  890. 9890  OUT &H440,27:OUT &H443,((GB*2)-1)*16+GB*2-1,1 '1,3,7,15
  891. 9900 RETURN
  892. 9910 '
  893. 9920 *FILEDRG
  894. 9930 *DIR_SEARCH
  895. 9940  DIR=0:ERN=0:RET&=0:SEA$=WLD$+CHR$(0)
  896. 9950  WHILE RET&=0
  897. 9960    DIR$=STRING$(255,0)
  898. 9970    RET&=CALLM(BAS_LIB&,0,VARPTR(SEA$),VARPTR(DIR$),0,-(DIR<>0))
  899. 9980    DIR$(DIR)=DIR$
  900. 9990    DIR=DIR+1
  901. 10000  WEND:MDIR=DIR:SEA$="*.*"+CHR$(0):RET&=0:CDIR&=0:DIR=DIR-1
  902. 10010  WHILE RET&=0
  903. 10020    DIR$=STRING$(255,0)
  904. 10030    RET&=CALLM(BAS_LIB&,0,VARPTR(SEA$),VARPTR(DIR$),16,CDIR&)
  905. 10040    IF LEFT$(DIR$,1)="D" THEN DIR$(DIR)=DIR$:DIR=DIR+1
  906. 10050    CDIR&=1
  907. 10060  WEND
  908. 10070  'DIR=DIR-1':STOP
  909. 10080  IF DIR=0 THEN ERN=3:RETURN
  910. 10090  FOR I_=0 TO DIR-1
  911. 10100   FOR J_=I_ TO DIR-1
  912. 10110    IF DIR$(I_)>DIR$(J_) THEN SWAP DIR$(I_),DIR$(J_):J_=I_:GOTO 10110
  913. 10120   NEXT
  914. 10130  NEXT
  915. 10140  FOR I_=0 TO DIR-1
  916. 10150    DIR$(I_)=LEFT$(DIR$(I_),INSTR(DIR$(I_),CHR$(0))-1)
  917. 10160  NEXT
  918. 10170 RETURN
  919. 10180 *PAS_PUT
  920. 10190 IF INSTR(PAS$,CHR$(&H20)) THEN PAS$=LEFT$(PAS$,INSTR(PAS$,CHR$(&H20))-1)
  921. 10200  IF LEN(PAS$)>31 THEN PPAS$="…"+RIGHT$(PAS$,29) ELSE PPAS$=PAS$
  922. 10210  LINE(WX(4)+9,WY(4)+21)-STEP(189,13),PSET,%7,BF
  923. 10220  SYMBOL(WX(4)+13,WY(4)+23),PPAS$,.75!,.75!,%8
  924. 10230  SYMBOL(WX(4)+12,WY(4)+22),PPAS$,.75!,.75!,7
  925. 10240 RETURN
  926. 10250 *BTN_CHK:IF FNMPAU(MSX,MSY,MEX,MEY,0) THEN ELSE MOS=0:RETURN
  927. 10260  GOSUB *BTN_ON
  928. 10270  IF FNMPAU(MSX,MSY,MEX,MEY,0) THEN 10270 ELSE IF FNMHAN(MSX,MSY,MEX,MEY) THEN MOS=-1 ELSE MOS=0
  929. 10280  GOSUB *BTN_OFF
  930. 10290  WHILE MOUSE(2,0) AND FNMHAN(MSX,MSY,MEX,MEY):WEND
  931. 10300 RETURN
  932. 10310 *BTN_CHK2:
  933. 10320 *BTN_CHK3:IF FNMPAU(MSX,MSY,MEX,MEY,0) THEN ELSE MOS=0:RETURN
  934. 10330  GOSUB *BTN_ON
  935. 10340  MOS=-1'IF FNMPAU(MSX,MSY,MEX,MEY,0) THEN 9776 ELSE IF FNMHAN(MSX,MSY,MEX,MEY) THEN MOS=-1 ELSE MOS=0
  936. 10350  GOSUB *BTN_OFF
  937. 10360 ' WHILE MOUSE(2,0) AND FNMHAN(MSX,MSY,MEX,MEY):WEND
  938. 10370 RETURN
  939. 10380 '
  940. 10390 '
  941. 10400 'メインルーチン
  942. 10410 '
  943. 10420 *MAIN_SCREEN
  944. 10430   SCREEN@0
  945. 10440   GOSUB *N_VIEW
  946. 10450   SPRITE ON:SCRN_MODE=0:SCRN_X=48:GOSUB *SCRN_CHANGE:SPRITE 0,128,HENG
  947. 10460   SPRITE 0,384,BACG
  948. 10470   GOSUB *PR0
  949. 10480   PALETTE 14,0
  950. 10490   LINE(0,0)-(639,479),PSET,%7,BF
  951. 10500   LINE(96,32)-STEP(511,431),PSET,%0,BF
  952. 10510   MSX=0:MSY=0:MEX=96-16-1:MEY=79-4:GOSUB *PBTN
  953. 10520   PUT@A(2,2)-(76,56),LOGO&
  954. 10530   SYMBOL(23,61),VER$,.75!,.75!,%8
  955. 10540   SYMBOL(22,60),VER$,.75!,.75!,7
  956. 10550   MSX=624:MSY=0:MEX=649:MEY=15:GOSUB *PBTN
  957. 10560   LINE(624+4,2)-STEP(9,6),PSET,%14,B
  958. 10570   LINE(624+2,6)-STEP(9,6),PSET,%14,B
  959. 10580   MSX=80:MSY=32:MEX=91:MEY=463:GOSUB *PBTN
  960. 10590   MSX=628:MSY=32:MEX=639:MEY=463:GOSUB *PBTN
  961. 10600   MSX=96:MSY=0:MEX=607:MEY=11:GOSUB *PBTN
  962. 10610   MSX=96:MSY=468:MEX=607:MEY=479:GOSUB *PBTN
  963. 10620   SYMBOL(3,467),"FUJISSLY SOFT",.75!,.75!,%8,,,1
  964. 10630   SYMBOL(2,466),"FUJISSLY SOFT",.75!,.75!,7,,,1
  965. 10640   GOSUB *BAN
  966. 10650   GOSUB *M_INIT:IF PPEN<>-1 THEN MPN=16+PPEN:GOSUB *M_PAT ELSE MPN=0:GOSUB *M_PAT
  967. 10660   PALETTE 14,0:PALETTE 8,[63,63,63]:PALETTE 7,[159,159,159]:RGB=PL(0):GOSUB *RGB_BUNKAI:PALETTE 13,[G*8,R*8,B*8]:RGB=PL(PAL):GOSUB *RGB_BUNKAI:PALETTE 11,[G*8,R*8,B*8]
  968. 10670   GOSUB *ALL_WINO'IF WIN<>-1 THEN FOR I=0 TO WIN:WN=WIF(WIN):GOSUB *WINO:NEXT
  969. 10680   GOSUB *WB_PUT
  970. 10690   RETURN
  971. 10700 *W_GET
  972. 10710  GET@A(640,0)-(895,255),WORK&
  973. 10720 RETURN
  974. 10730 *B_GET
  975. 10740  GET@A(640,256)-(895,511),BACK&
  976. 10750 RETURN
  977. 10760 *W_PUT
  978. 10770  PUT@A(640,0)-(895,255),WORK&
  979. 10780 RETURN
  980. 10790 *B_PUT
  981. 10800  PUT@A(640,256)-(895,511),BACK&
  982. 10810 RETURN
  983. 10820 *WB_PUT
  984. 10830  GOSUB *W_PUT:GOSUB *B_PUT
  985. 10840 RETURN
  986. 10850 *MAIN':GOTO *I1
  987. 10860  MOB1=MOUSE(2,0):MOB2=MOUSE(2,1):IF MOB1 OR MOB2 THEN ELSE *MAIN
  988. 10870  MOX=MOUSE(0):MOY=MOUSE(1)':GX=MOX:GY=MOY:GOSUB *BAN':CLS
  989. 10880  IF WIN<>-1 THEN
  990. 10890    WN=WIF(WIN)
  991. 10900    IF FNMW(MOX,MOY,MOB1) THEN *MAIN_WIN
  992. 10910    IF WIN>=1 THEN
  993. 10920      FOR Z=WIN-1 TO 0 STEP -1
  994. 10930        WN=WIF(Z)
  995. 10940        IF FNMW(MOX,MOY,MOB1) THEN Z=0:NEXT:GOSUB *WTOP:GOTO 10880'GOTO *MAIN
  996. 10950      NEXT
  997. 10960    ENDIF
  998. 10970  ENDIF
  999. 10980  MSX=624:MEX=639:MSY=0:MEY=15:WMANF=0
  1000. 10990  IF WIN>-1 THEN WMANF=0:FOR I=0 TO WIN:X1=MSX:Y1=MSY:X2=MEX:Y2=MEY:A1=WX(WIF(I)):B1=WY(WIF(I)):A2=WX(WIF(I))+WWX(WIF(I)):B2=WY(WIF(I))+WWY(WIF(I)):GOSUB *CHK:IF RET=-1 THEN WMANF=-1:NEXT ELSE NEXT
  1001. 11000  IF WMANF THEN ELSE GOSUB *BTN_CHK:IF MOS THEN GOSUB *WIN_MAN:GOTO *MAIN
  1002. 11010  GOSUB *C_IDO
  1003. 11020  GOSUB *CHOK:'直接位置指定
  1004. 11030  GOSUB *M_EDO'ドット等の編集操作
  1005. 11040 GOTO *MAIN
  1006. 11050 *WIN_MAN
  1007. 11060  IF SEARCH(WIF,5)<>-1 AND SEARCH(WIF,5)<=WIN THEN WN=5:GOSUB *WTOP ELSE WN=5:WX(WN)=MOUSE(0):WY(WN)=MOUSE(1):GOSUB *WIN_ON
  1008. 11070 RETURN
  1009. 11080 *C_IDO
  1010. 11090  IF FNMPAU( 80, 32, 91,463,0) OR FNMPAU(628, 32,639,463,0) OR FNMPAU( 96,  0,607, 11,0) OR FNMPAU( 96,468,607,479,0) THEN ELSE RETURN
  1011. 11100  GOSUB *ALL_WINC
  1012. 11110  IF FNMPAU( 80, 32, 91,463,0) THEN MSX=80:MSY=32:MEX=91:MEY=463:GOSUB *BTN_ON:WHILE FNMPAU( 80, 32, 91,463,0):GX=GX-1:GOSUB *Z_CHK:GOSUB *BAN:WEND:GOSUB *BTN_OFF
  1013. 11120  IF FNMPAU(628, 32,639,463,0) THEN MSX=628:MSY=32:MEX=639:MEY=463:GOSUB *BTN_ON:WHILE FNMPAU(628, 32,639,463,0):GX=GX+1:GOSUB *Z_CHK:GOSUB *BAN:WEND:GOSUB *BTN_OFF
  1014. 11130  IF FNMPAU( 96,  0,607, 11,0) THEN MSX=96:MSY=0:MEX=607:MEY=11:GOSUB *BTN_ON:WHILE FNMPAU( 96, 0, 607,11,0):GY=GY-1:GOSUB *Z_CHK:GOSUB *BAN:WEND:GOSUB *BTN_OFF
  1015. 11140  IF FNMPAU( 96,468,607,479,0) THEN MSX=96:MSY=468:MEX=607:MEY=479:GOSUB *BTN_ON:WHILE FNMPAU( 96, 468, 607,479,0):GY=GY+1:GOSUB *Z_CHK:GOSUB *BAN:WEND:GOSUB *BTN_OFF
  1016. 11150  GOSUB *ALL_WINO
  1017. 11160 RETURN
  1018. 11170 *Z_CHK
  1019. 11180  IF GX<0 THEN GX=0
  1020. 11190  IF GY<0 THEN GY=0
  1021. 11200  IF GX+256/GB-1>255 THEN GX=256-256/GB
  1022. 11210  IF GY+216/GB-1>255 THEN GY=256-216/GB
  1023. 11220 RETURN
  1024. 11230 *CHOK
  1025. 11240  IF FNMPAU(8,208,8+63,208+63,0) THEN ELSE RETURN
  1026. 11250  GOSUB *ALL_WINC
  1027. 11260  WHILE FNMPAU(8,208,8+63,208+63,0)
  1028. 11270   'LINE(8+GX/4,208+GY/4)-STEP(64/GB-1,54/GB-1),PSET,%14,B
  1029. 11280   GX=(MOUSE(0)-32/GB-8)*4
  1030. 11290   GY=(MOUSE(1)-27/GB-208)*4
  1031. 11300   GOSUB *Z_CHK
  1032. 11310   GOSUB *BAN
  1033. 11320   'LINE(8+GX/4,208+GY/4)-STEP(64/GB-1,54/GB-1),PSET,7,B
  1034. 11330  WEND
  1035. 11340  GOSUB *ALL_WINO
  1036. 11350 RETURN
  1037. 11360 *MAIN_WIN
  1038. 11370  ON WN+1 GOSUB *MW0,*MW1,*MW2,*MW3,11390,*MW5',*MW6,*MW7,*MW8
  1039. 11380 GOTO *MAIN
  1040. 11390 RETURN
  1041. 11400 *MW5:BCHK=1
  1042. 11410  FOR J__=0 TO 5
  1043. 11420   MSX=WX(5)+6+(J__ MOD 3)*30:MSY=WY(5)+20+(J__\3)*18:MEX=MSX+27:MEY=MSY+15:GOSUB *BTN_CHK
  1044. 11430   IF MOS THEN
  1045. 11440     IF J__>3 THEN BCHK=0:GOTO 11570
  1046. 11450     IF SEARCH(WIF,J__)<>-1 AND SEARCH(WIF,J__)<=WIN-1 THEN
  1047. 11460       WN=5:GOSUB *WIN_OFF
  1048. 11470       IF WIF(WIN)<>J__ THEN WN=J__:GOSUB *WTOP
  1049. 11480       WN=WIF(WIN):GOSUB *WIN_OFF
  1050. 11490       WN=5:GOSUB *WIN_ON
  1051. 11500       BCHK=0
  1052. 11510     ELSE
  1053. 11520       WN=5:GOSUB *WIN_OFF
  1054. 11530       WN=J__:GOSUB *WIN_ON
  1055. 11540       WN=5:GOSUB *WIN_ON
  1056. 11550       BCHK=0
  1057. 11560     ENDIF
  1058. 11570     J__=5
  1059. 11580   ENDIF
  1060. 11590  NEXT
  1061. 11600  MSX=WX(5)+4:MSY=WY(5)+4:MEX=MSX+11:MEY=MSY+11:GOSUB *BTN_CHK
  1062. 11610  IF MOS THEN GOSUB *WIN_OFF:BCHK=0
  1063. 11620  MSX=WX(5)+2:MSY=WY(5)+2:MEX=MSX+WWX(5)-5:MEY=MSY+15:GOSUB *BTN_CHK2
  1064. 11630  IF BCHK AND MOS THEN GOSUB *MOVE_WIN
  1065. 11640 RETURN
  1066. 11650 *M
  1067. 11660  WN=3:GOSUB *WIN_ON
  1068. 11670  WN=2:GOSUB *WIN_ON
  1069. 11680  'WN=2:GOSUB *WIN_ON
  1070. 11690  WN=0:GOSUB *WIN_ON
  1071. 11700  WN=3:GOSUB *WTOP':GOSUB *WIN_OFF
  1072. 11710  LPRINT WIN,:FOR F=0 TO WIN:LPRINT WIF(F),:NEXT:LPRINT:LPRINT
  1073. 11720  WN=2:GOSUB *WTOP
  1074. 11730  LPRINT WIN,:FOR F=0 TO WIN:LPRINT WIF(F),:NEXT:LPRINT:LPRINT
  1075. 11740 '
  1076. 11750 *MW1:BCHK=1
  1077. 11760  FOR J__=0 TO 15
  1078. 11770    MSX=WX(1)+6+(J__ MOD 4)*42:MSY=WY(1)+20+(J__\4)*18:MEX=MSX+39:MEY=MSY+15
  1079. 11780    GOSUB *BTN_CHK
  1080. 11790    IF MOS THEN
  1081. 11800      IF J__>1 THEN ELSE PPEN=J__:GOSUB *WW1:MPN=16+PPEN:GOSUB *M_PAT
  1082. 11810      BCHK=0:J__=15
  1083. 11820    ENDIF
  1084. 11830  NEXT
  1085. 11840  MSX=WX(1)+4:MSY=WY(1)+4:MEX=MSX+11:MEY=MSY+11:GOSUB *BTN_CHK
  1086. 11850  IF MOS THEN GOSUB *WIN_OFF:BCHK=0
  1087. 11860  MSX=WX(1)+2:MSY=WY(1)+2:MEX=MSX+WWX(1)-5:MEY=MSY+15:GOSUB *BTN_CHK2
  1088. 11870  IF BCHK AND MOS THEN GOSUB *MOVE_WIN
  1089. 11880 RETURN
  1090. 11890 *WW1
  1091. 11900  FOR T=0 TO 15:MSX=WX(1)+6+(T MOD 4)*42:MSY=WY(1)+20+(T\4)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_OFF:NEXT
  1092. 11910  MSX=WX(1)+6+(PPEN MOD 4)*42:MSY=WY(1)+20+(PPEN\4)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  1093. 11920 RETURN
  1094. 11930 '
  1095. 11940 *MW2:BCHK=1
  1096. 11950  FOR J__=0 TO 3
  1097. 11960    MSX=WX(2)+6+(J__ MOD 4)*42:MSY=WY(2)+20+(J__\4)*18:MEX=MSX+39:MEY=MSY+15
  1098. 11970    GOSUB *BTN_CHK
  1099. 11980    IF MOS THEN
  1100. 11990      'GX=GX+256\GB\2:GY=GY+216\GB\2
  1101. 12000      GB=2^J__
  1102. 12010      'GX=GX-256\GB\2:GY=GY-216\GB\2
  1103. 12020      GOSUB *PAL_SPR
  1104. 12030      GOSUB *Z_CHK
  1105. 12040      GOSUB *ALL_WINC
  1106. 12050      GOSUB *BAN
  1107. 12060      GOSUB *ALL_WINO
  1108. 12070      BCHK=0:J__=3
  1109. 12080    ENDIF
  1110. 12090  NEXT
  1111. 12100  MSX=WX(2)+6+84:MSY=WY(2)+38:MEX=MSX+39:MEY=MSY+15
  1112. 12110  GOSUB *BTN_CHK
  1113. 12120  IF MOS THEN
  1114. 12130    IF HENG THEN HENG=0:GOSUB *SWT_OFF:SPRITE 0,128,0 ELSE HENG=1:GOSUB *SWT_ON_G:SPRITE 0,128,1
  1115. 12140  ENDIF
  1116. 12150  MSX=WX(2)+6+126:MSY=WY(2)+38:MEX=MSX+39:MEY=MSY+15
  1117. 12160  GOSUB *BTN_CHK
  1118. 12170  IF MOS THEN
  1119. 12180    IF BACG THEN BACG=0:GOSUB *SWT_OFF:SPRITE 0,384,0 ELSE BACG=1:GOSUB *SWT_ON_G:SPRITE 0,384,1
  1120. 12190  ENDIF
  1121. 12200  MSX=WX(2)+6+42:MSY=WY(2)+38:MEX=MSX+39:MEY=MSY+15
  1122. 12210  GOSUB *BTN_CHK
  1123. 12220  IF FNMPAU(WX(2)+6,WY(2)+38,WX(2)+6+39,WY(2)+38+15,0) THEN
  1124. 12230    MMMX=MOUSE(0):MMMY=MOUSE(1):MOUSE 1,0,0,0
  1125. 12240    GOSUB *W_GET:GOSUB *B_GET
  1126. 12250    SCREEN@1:SPRITE ON:SPRITE SCREEN (32,0):SPRITE 6,,0,0
  1127. 12260    SPRITE 0,128,1:RGB&=PL(0):CALLM SPRBACK&,RGB&
  1128. 12270    WHILE MOUSE(2,0):SPRITE 6,,MOUSE(0),MOUSE(1):WEND
  1129. 12280    GOSUB *MAIN_SCREEN:GOSUB *RGB_SET:MOUSE 1,MMMX,MMMY,1
  1130. 12290    IF PPEN=-1 THEN MPN=0 ELSE MPN=16+PPEN
  1131. 12300    GOSUB *M_PAT
  1132. 12310  ENDIF
  1133. 12320  MSX=WX(2)+4:MSY=WY(2)+4:MEX=MSX+11:MEY=MSY+11:GOSUB *BTN_CHK
  1134. 12330  IF MOS THEN GOSUB *WIN_OFF:BCHK=0
  1135. 12340  MSX=WX(2)+2:MSY=WY(2)+2:MEX=MSX+WWX(2)-5:MEY=MSY+15:GOSUB *BTN_CHK2
  1136. 12350  IF BCHK AND MOS THEN GOSUB *MOVE_WIN
  1137. 12360 RETURN
  1138. 12370 *PAL_SPR
  1139. 12380  IF GB=1 THEN GBG=8
  1140. 12390  IF GB=2 THEN GBG=4
  1141. 12400  IF GB=4 THEN GBG=2
  1142. 12410  IF GB=8 THEN GBG=1
  1143. 12420  GOSUB *M_OFF:FOR I=0 TO 15:LINE(1008,496)-STEP(15,15),PSET,%0,BF:LINE(1008,496)-STEP(GBG-1,GBG-1),PSET,%I,BF:GET@A(1008,496)-(1008+15,496+15),DM&:DEF SPRITE 0,512+I,DM&,0:DEF SPRITE 1,I,(0,0),512+I,1,1,0,0:NEXT:GOSUB *M_ON
  1144. 12430 RETURN
  1145. 12440 *MW3:BCHK=1
  1146. 12450  MSX=WX(3)+112+16-8:MSY=WY(3)+4:MEX=WX(3)+171:MEY=WY(3)+15
  1147. 12460  GOSUB *BTN_CHK
  1148. 12470  IF MOS THEN
  1149. 12480    GOSUB *BTN_ON:GOSUB *SWT_ON_R
  1150. 12490    MMPN=MPN
  1151. 12500    MPN=5:GOSUB *M_PAT
  1152. 12510    WHILE MOUSE(2,0)=0 AND MOUSE(2,1)=0:WEND
  1153. 12520    IF MOUSE(2,0) THEN
  1154. 12530      SPOX=MOUSE(0):SPOY=MOUSE(1)
  1155. 12540      GET@A(SPOX,SPOY)-(SPOX,SPOY),SPO
  1156. 12550      IF SPO(0)=0 THEN
  1157. 12560        IF SPOX>=96 AND SPOY>=32 AND SPOX<=607 AND SPOY<=448 THEN
  1158. 12570           GET@A(640+(SPOX-96)\(GB*2)+GX,(SPOY-32)\(GB*2)+GY)-(640+(SPOX-96)\(GB*2)+GX,(SPOY-32)\(GB*2)+GY),SPO:RGB=PL(SPO(0))
  1159. 12580           IF SPO(0)=0 OR HENG=0 THEN
  1160. 12590             GET@A(640+(SPOX-96)\(GB*2)+GX,256+(SPOY-32)\(GB*2)+GY)-(640+(SPOX-96)\(GB*2)+GX,256+(SPOY-32)\(GB*2)+GY),SPO:RGB=BPAL(SPO(0))
  1161. 12600             IF SPO(0)=0 OR BACG=0 THEN RGB=PL(0)
  1162. 12610           ENDIF
  1163. 12620         ENDIF
  1164. 12630        IF SPOX>=WX(3)+16 AND SPOY>=WY(3)+20 AND SPOX<=WX(3)+79 AND SPOY<=WY(3)+83 THEN
  1165. 12640            RGB=PL(((SPOX-WX(3)-16)\16)+((SPOY-WY(3)-20)\16)*4)
  1166. 12650        ENDIF
  1167. 12660      ELSE
  1168. 12670        OUT &HFD90,SPO(0) AND 15,1
  1169. 12680        B=INP(&HFD92,1)\8
  1170. 12690        R=INP(&HFD94,1)\8
  1171. 12700        G=INP(&HFD96,1)\8
  1172. 12710        GOSUB *RGB_GOUSEI
  1173. 12720      ENDIF
  1174. 12730      PL(PAL)=RGB:KAKI=1
  1175. 12740      GOSUB *RGB_SET:GOSUB *RGB_PUT:WHILE MOUSE(2,0):WEND
  1176. 12750    ENDIF
  1177. 12760    GOSUB *BTN_OFF:GOSUB *SWT_OFF
  1178. 12770    BCHK=0:MPN=MMPN:GOSUB *M_PAT
  1179. 12780  ENDIF
  1180. 12790  IF FNMPAU(WX(3)+16,WY(3)+20,WX(3)+16+63,WY(3)+20+63,0) THEN
  1181. 12800    MSPOX=MOUSE(0)-WX(3)-16:MSPOY=MOUSE(1)-WY(3)-20
  1182. 12810    IF MSPOX<0 THEN MSPOX=0
  1183. 12820    IF MSPOY<0 THEN MSPOY=0
  1184. 12830    IF MSPOX>63 THEN MSPOX=63
  1185. 12840    IF MSPOY>63 THEN MSPOY=63
  1186. 12850    SPAL=(MSPOX\16)+(MSPOY\16)*4
  1187. 12860    IF SPAL=PAL THEN 12940
  1188. 12870    GOSUB *M_OFF
  1189. 12880    LINE(WX(3)+17+(PAL MOD 4)*16,WY(3)+21+(PAL\4)*16)-STEP(14,14),PSET,%13+(PAL<>0)*13,B
  1190. 12890    PAL=SPAL
  1191. 12900    LINE(WX(3)+17+(PAL MOD 4)*16,WY(3)+21+(PAL\4)*16)-STEP(14,14),PSET,7,B,&H6666
  1192. 12910    LINE(WX(3)+17+(PAL MOD 4)*16,WY(3)+21+(PAL\4)*16)-STEP(14,14),PSET,%14,B,&H9999
  1193. 12920    GOSUB *M_ON
  1194. 12930    GOSUB *RGB_PUT
  1195. 12940    BCHK=0
  1196. 12950  ENDIF
  1197. 12960  IF FNMPAU(WX(3)+108,WY(3)+27,WX(3)+108+31,WY(3)+27+11,0) THEN
  1198. 12970    YOX=MOUSE(0)-WX(3)-108
  1199. 12980    IF YOX>=0 AND YOX<=31 THEN
  1200. 12990      RGB=PL(PAL):GOSUB *RGB_BUNKAI:R=YOX:GOSUB *RGB_GOUSEI
  1201. 13000      IF PL(PAL)<>RGB THEN PL(PAL)=RGB:KAKI=1:GOSUB *RGB_SET:GOSUB *RGB_PUT':WHILE MOUSE(2,0):WEND:BCHK=0
  1202. 13010      BCHK=0
  1203. 13020    ENDIF
  1204. 13030      BCHK=0
  1205. 13040  ENDIF
  1206. 13050  IF FNMPAU(WX(3)+108,WY(3)+47,WX(3)+108+31,WY(3)+47+11,0) THEN
  1207. 13060    YOX=MOUSE(0)-WX(3)-108
  1208. 13070    IF YOX>=0 AND YOX<=31 THEN
  1209. 13080      RGB=PL(PAL):GOSUB *RGB_BUNKAI:G=YOX:GOSUB *RGB_GOUSEI
  1210. 13090      IF PL(PAL)<>RGB THEN PL(PAL)=RGB:KAKI=1:GOSUB *RGB_SET:GOSUB *RGB_PUT':WHILE MOUSE(2,0):WEND:BCHK=0
  1211. 13100      BCHK=0
  1212. 13110    ENDIF
  1213. 13120      BCHK=0
  1214. 13130  ENDIF
  1215. 13140  IF FNMPAU(WX(3)+108,WY(3)+67,WX(3)+108+31,WY(3)+67+11,0) THEN
  1216. 13150    YOX=MOUSE(0)-WX(3)-108
  1217. 13160    IF YOX>=0 AND YOX<=31 THEN
  1218. 13170      RGB=PL(PAL):GOSUB *RGB_BUNKAI:B=YOX:GOSUB *RGB_GOUSEI
  1219. 13180      IF PL(PAL)<>RGB THEN PL(PAL)=RGB:KAKI=1:GOSUB *RGB_SET:GOSUB *RGB_PUT':WHILE MOUSE(2,0):WEND
  1220. 13190      BCHK=0
  1221. 13200    ENDIF
  1222. 13210      BCHK=0
  1223. 13220  ENDIF
  1224. 13230  MSX=WX(3)+98:MSY=WY(3)+26+0*20:MEX=MSX+8:MEY=MSY+13:GOSUB *BTN_CHK3
  1225. 13240  IF MOS THEN BCHK=0:RGB=PL(PAL):GOSUB *RGB_BUNKAI:IF R>0 THEN R=R-1:GOSUB *RGB_GOUSEI:IF PL(PAL)<>RGB THEN PL(PAL)=RGB:GOSUB *RGB_SET:GOSUB *RGB_PUT:KAKI=1:WAIT 5
  1226. 13250  MSX=WX(3)+98:MSY=WY(3)+26+1*20:MEX=MSX+8:MEY=MSY+13:GOSUB *BTN_CHK3
  1227. 13260  IF MOS THEN BCHK=0:RGB=PL(PAL):GOSUB *RGB_BUNKAI:IF G>0 THEN G=G-1:GOSUB *RGB_GOUSEI:IF PL(PAL)<>RGB THEN PL(PAL)=RGB:GOSUB *RGB_SET:GOSUB *RGB_PUT:KAKI=1:WAIT 5
  1228. 13270  MSX=WX(3)+98:MSY=WY(3)+26+2*20:MEX=MSX+8:MEY=MSY+13:GOSUB *BTN_CHK3
  1229. 13280  IF MOS THEN BCHK=0:RGB=PL(PAL):GOSUB *RGB_BUNKAI:IF B>0 THEN B=B-1:GOSUB *RGB_GOUSEI:IF PL(PAL)<>RGB THEN PL(PAL)=RGB:GOSUB *RGB_SET:GOSUB *RGB_PUT:KAKI=1:WAIT 5
  1230. 13290  MSX=141+WX(3):MSY=26+0*20+WY(3):MEX=MSX+8:MEY=MSY+13:GOSUB *BTN_CHK3
  1231. 13300  IF MOS THEN BCHK=0:RGB=PL(PAL):GOSUB *RGB_BUNKAI:IF R<31 THEN R=R+1:GOSUB *RGB_GOUSEI:IF PL(PAL)<>RGB THEN PL(PAL)=RGB:GOSUB *RGB_SET:GOSUB *RGB_PUT:KAKI=1:WAIT 5
  1232. 13310  MSX=141+WX(3):MSY=26+1*20+WY(3):MEX=MSX+8:MEY=MSY+13:GOSUB *BTN_CHK3
  1233. 13320  IF MOS THEN BCHK=0:RGB=PL(PAL):GOSUB *RGB_BUNKAI:IF G<31 THEN G=G+1:GOSUB *RGB_GOUSEI:IF PL(PAL)<>RGB THEN PL(PAL)=RGB:GOSUB *RGB_SET:GOSUB *RGB_PUT:KAKI=1:WAIT 5
  1234. 13330  MSX=141+WX(3):MSY=26+2*20+WY(3):MEX=MSX+8:MEY=MSY+13:GOSUB *BTN_CHK3
  1235. 13340  IF MOS THEN BCHK=0:RGB=PL(PAL):GOSUB *RGB_BUNKAI:IF B<31 THEN B=B+1:GOSUB *RGB_GOUSEI:IF PL(PAL)<>RGB THEN PL(PAL)=RGB:GOSUB *RGB_SET:GOSUB *RGB_PUT:KAKI=1:WAIT 5
  1236. 13350  MSX=WX(3)+4:MSY=WY(3)+4:MEX=MSX+11:MEY=MSY+11:GOSUB *BTN_CHK
  1237. 13360  IF MOS THEN GOSUB *WIN_OFF:BCHK=0
  1238. 13370  MSX=WX(3)+2:MSY=WY(3)+2:MEX=MSX+WWX(3)-5:MEY=MSY+15:GOSUB *BTN_CHK2
  1239. 13380  IF BCHK AND MOS THEN GOSUB *MOVE_WIN
  1240. 13390 RETURN
  1241. 13400 *RGB_SET
  1242. 13410   DEF SPRITE 2,0,PL:RGB=PL(0):GOSUB *RGB_BUNKAI:PALETTE 13,[G*8,R*8,B*8]:RGB=PL(PAL):GOSUB *RGB_BUNKAI:PALETTE 11,[G*8,R*8,B*8]
  1243. 13420   RGB&=PL(0):CALLM SPRBACK&,RGB&
  1244. 13430 RETURN
  1245. 13440 *RGB_PUT
  1246. 13450  GOSUB *M_OFF
  1247. 13460  LINE(WX(3)+108,WY(3)+27)-STEP(31,11),PSET,%2,BF
  1248. 13470  LINE(WX(3)+108,WY(3)+47)-STEP(31,11),PSET,%4,BF
  1249. 13480  LINE(WX(3)+108,WY(3)+67)-STEP(31,11),PSET,%1,BF
  1250. 13490  RGB=PL(PAL):GOSUB *RGB_BUNKAI
  1251. 13500  LINE(WX(3)+156,WY(3)+27)-STEP(11,51),PSET,%7,BF
  1252. 13510  SYMBOL(WX(3)+156,WY(3)+27),RIGHT$(STR$(R),2),.75!,.75!,%14:IF R<>0 THEN LINE(WX(3)+108,WY(3)+27)-STEP(R,11),PSET,2,BF
  1253. 13520  SYMBOL(WX(3)+156,WY(3)+47),RIGHT$(STR$(G),2),.75!,.75!,%14:IF G<>0 THEN LINE(WX(3)+108,WY(3)+47)-STEP(G,11),PSET,4,BF
  1254. 13530  SYMBOL(WX(3)+156,WY(3)+67),RIGHT$(STR$(B),2),.75!,.75!,%14:IF B<>0 THEN LINE(WX(3)+108,WY(3)+67)-STEP(B,11),PSET,1,BF
  1255. 13540  GOSUB *M_ON
  1256. 13550  PALETTE 11,[G*8,R*8,B*8]:MPEDOX=-1:MPEDOY=-1
  1257. 13560 RETURN
  1258. 13570 *R_SQ
  1259. 13580    GOSUB *M_OFF
  1260. 13590    LINE(WX(3)+17+(SQ MOD 4)*16,WY(3)+21+(SQ\4)*16)-STEP(14,14),PSET,%13+(SQ<>0)*13,B
  1261. 13600    LINE(WX(3)+17+(PAL MOD 4)*16,WY(3)+21+(PAL\4)*16)-STEP(14,14),PSET,7,B,&H6666
  1262. 13610    LINE(WX(3)+17+(PAL MOD 4)*16,WY(3)+21+(PAL\4)*16)-STEP(14,14),PSET,%14,B,&H9999
  1263. 13620    GOSUB *M_ON
  1264. 13630    MPEDOX=-1:MPEDOY=-1
  1265. 13640 RETURN
  1266. 13650 *I1
  1267. 13660 WIN_X=100:WIN_Y=100:MES$="セーブの実験":SLF=0:DRV$="":PAS$="":WLD$="*.*":FI$="LOGO.TIF":GOSUB *FILE_SELECT:CLS:SPRITE OFF:PRINT FIL$:END
  1268. 13670 *FILE_SELECT
  1269. 13680  'WIN_X,WIN_Y=開く位置
  1270. 13690  'MES$=メッセージ
  1271. 13700  'DRV$=ドライブ名。大文字。空文字列のときはカレント。
  1272. 13710  'PAS$=ファイルまでのパス。大文字。空文字列はカレント。
  1273. 13720  'WLD$=ワイルドカード指定。
  1274. 13730  'FI$=あらかじめ設定しておくファイル名
  1275. 13740  'SLF=セーブ用ロード用フラグ。セーブ用なら0。ロード用なら1。
  1276. 13750  '
  1277. 13760  'FIL$=ファイル名。空文字列のときは取消。
  1278. 13770  '
  1279. 13780  MMMWN=WN:WN=4:FIL$="":BCHK=1
  1280. 13790  IF INSTR(FI$," ") THEN FI$=LEFT$(FI$,INSTR(FI$," ")-1)
  1281. 13800  WX(WN)=WIN_X:WY(WN)=WIN_Y:GOSUB *WIN_ON
  1282. 13810  SYMBOL(WX(4)+21,WY(4)+5),MES$+" "+STRING$(29-LEN(MES$),"="),.75!,.75!,%8
  1283. 13820  SYMBOL(WX(4)+20,WY(4)+4),MES$+" "+STRING$(29-LEN(MES$),"="),.75!,.75!,7
  1284. 13830  MOJ$=FI$:MJX=WX(4)+10:MJY=WY(4)+162-24:MJB=7:MJC=15:MJL=12:MJM=12:GOSUB *MOJI_T
  1285. 13840  IF DRV$="" THEN DRV$=CHR$(CALLM(BAS_LIB&,1))
  1286. 13850  GOSUB *DRV_SEL
  1287. 13860  IF ERN THEN *FS_MAIN
  1288. 13870  IF PAS$="" THEN PAS$=STRING$(255,0):RET&=CALLM(BAS_LIB&,2,ASC(DRV$),VARPTR(PAS$))
  1289. 13880  GOSUB *PAS_CHK
  1290. 13890  IF ERN THEN *FS_MAIN
  1291. 13900  GOSUB *WLD_LIST
  1292. 13910  'CP=カーソル先頭ポインタ,DIR=対象ファイル数,FI$=選択ファイル名部分
  1293. 13920  *FS_MAIN:BCHK=1
  1294. 13930    DRL$="ABDEFGHIJKLMNOPQ"
  1295. 13940    FOR J=0 TO 15
  1296. 13950      MSX=WX(4)+12+(J MOD 4)*22:MSY=WY(4)+60+(J\4)*16:MEX=MSX+21:MEY=MSY+15:GOSUB *BTN_CHK
  1297. 13960      IF MOS THEN DRV$=MID$(DRL$,J+1,1):J=15:NEXT:GOTO 13850
  1298. 13970    NEXT 'パス31文字 ファイル4段
  1299. 13980    IF SLF THEN ELSE MSX=WX(4)+8:MEX=MSX+69+6:MSY=WY(4)+160-24:MEY=MSY+15:GOSUB *BTN_CHK:IF MOS THEN MJX=WX(4)+10:MJY=WY(4)+162-24:MJB=7:MJC=15:MJL=12:MJM=12:MOJ$=FI$:GOSUB *MOJI_IN:FI$=MOJ$
  1300. 13990 MSX=WX(4)+112+20:MEX=MSX+31:MSY=WY(4)+160-24:MEY=MSY+15:GOSUB *BTN_CHK
  1301. 14000 IF MOS THEN GOSUB *WIN_OFF:IF FI$="" THEN FIL$="":WN=MMMWN:RETURN ELSE GOSUB *EN:FIL$=DRV$+":"+PAS$+EN$+FI$:IF INSTR(FIL$," ") THEN FIL$=LEFT$(FIL$,INSTR(FIL$," ")-1):WN=MMMWN:RETURN ELSE WN=MMMWN:RETURN
  1302. 14010 MSX=WX(4)+112+20+36:MEX=MSX+31:MSY=WY(4)+160-24:MEY=MSY+15:GOSUB *BTN_CHK
  1303. 14020 IF MOS THEN  GOSUB *WIN_OFF:FIL$="":WN=MMMWN:RETURN
  1304. 14030 MSX=WX(4)+112:MSY=WY(4)+40:MEX=MSX+14*6+4-1:MEY=MSY+10:GOSUB *BTN_CHK3
  1305. 14040  IF MOS AND CP>0 THEN CPD=-1:GOSUB *FLIST_PUT
  1306. 14050 MSX=WX(4)+112:MSY=WY(4)+144-28+1:MEX=MSX+14*6+4-1:MEY=MSY+10:GOSUB *BTN_CHK3
  1307. 14060  IF MOS AND DIR>5 AND CP<DIR-5 THEN CPD=+1:GOSUB *FLIST_PUT
  1308. 14070  IF FNMPAU(WX(4)+112,WY(4)+51,WX(4)+112+14*6+4-1,WY(4)+51+16*4+1,0) THEN
  1309. 14080    FOR J=0 TO 4
  1310. 14090      IF FNMPAU(WX(4)+112,WY(4)+51+J*13,WX(4)+112+14*6+4-1,WY(4)+51+J*13+12,0) THEN
  1311. 14100        IF LEFT$(DIR$(CP+J),1)="D" THEN IF CP+J<DIR THEN CH$=MID$(DIR$(CP+J),2):GOSUB *DIR_CHANGE:J=4:NEXT:GOTO 13880
  1312. 14110        IF LEFT$(DIR$(CP+J),1)="F" THEN IF CP+J<DIR THEN FI$=MID$(DIR$(CP+J),2):MOJ$=FI$:MJX=WX(4)+10:MJY=WY(4)+162-24:MJB=7:MJC=15:MJL=12:MJM=12:GOSUB *MOJI_T:J=4
  1313. 14120      ENDIF
  1314. 14130    NEXT
  1315. 14140  ENDIF
  1316. 14150  MSX=WX(4)+4:MSY=WY(4)+4:MEX=MSX+11:MEY=MSY+11:GOSUB *BTN_CHK
  1317. 14160  IF MOS THEN GOSUB *WIN_OFF:FIL$="":WN=MMMWN:RETURN
  1318. 14170  MSX=WX(4)+2:MSY=WY(4)+2:MEX=MSX+WWX(4)-5:MEY=MSY+15:GOSUB *BTN_CHK2
  1319. 14180  IF BCHK AND MOS THEN
  1320. 14190  GOSUB *MOVE_WIN:GOTO 13810'SYMBOL(WX(4)+21,WY(4)+5),MES$+" "+STRING$(29-LEN(MES$),"="),.75!,.75!,%8:SYMBOL(WX(4)+20,WY(4)+4),MES$+" "+STRING$(29-LEN(MES$),"="),.75!,.75!,7
  1321. 14200  'MOJ$=FI$:MJX=WX(4)+10:MJY=WY(4)+162-24:MJB=7:MJC=15:MJL=12:MJM=12:GOSUB *MOJI_T:MJ_=INSTR(DRL$,DRV$)-1:MSX=WX(4)+12+(MJ_ MOD 4)*22:MSY=WY(4)+60+(MJ_\4)*16:MEX=MSX+21:MEY=MSY+15:GOSUB *SWT_ON_R
  1322. 14210  'GOSUB *WLD_LIST:GOSUB *PAS_PUT
  1323. 14220  ENDIF
  1324. 14230 GOTO *FS_MAIN
  1325. 14240 *EN:IF PAS$<>"\" THEN EN$="\" ELSE EN$=""
  1326. 14250 RETURN
  1327. 14260 *DRV_SEL
  1328. 14270  FOR J=0 TO 15:MSX=WX(4)+12+(J MOD 4)*22:MSY=WY(4)+60+(J\4)*16:MEX=MSX+21:MEY=MSY+15:GOSUB *SWT_OFF:NEXT
  1329. 14280  DRL$="ABDEFGHIJKLMNOPQ"
  1330. 14290  MJ_=INSTR(DRL$,DRV$)-1:MSX=WX(4)+12+(MJ_ MOD 4)*22:MSY=WY(4)+60+(MJ_\4)*16:MEX=MSX+21:MEY=MSY+15:GOSUB *SWT_ON_R
  1331. 14300  ERN=0:ON ERROR GOTO *DRV_SEL_E
  1332. 14310  SHELL DRV$+":"
  1333. 14320  ON ERROR GOTO *MERR
  1334. 14330  IF SLF THEN GOSUB *FI_CLEAR
  1335. 14340  IF ERN THEN PAS$="" ELSE PAS$=STRING$(255,0):RET&=CALLM(BAS_LIB&,2,ASC(DRV$),VARPTR(PAS$))
  1336. 14350  MSX=WX(4)+8:MSY=WY(4)+20:MEX=MSX+191:MEY=MSY+15:GOSUB *PBTN
  1337. 14360  LINE(WX(4)+112,WY(4)+51)-STEP(14*6+4-1,16*4+1),PSET,7,BF
  1338. 14370  CP=0:DIR=0
  1339. 14380 RETURN
  1340. 14390 *DRV_SEL_E
  1341. 14400  ERN=ERR
  1342. 14410 RESUME NEXT
  1343. 14420 *FI_CLEAR
  1344. 14430  FI$="":MOJ$=FI$:MJX=WX(4)+10:MJY=WY(4)+162-24:MJB=7:MJC=15:MJL=12:MJM=12:GOSUB *MOJI_T
  1345. 14440 RETURN
  1346. 14450 *PAS_CHK
  1347. 14460  ON ERROR GOTO *DRV_SEL_E
  1348. 14470  IF INSTR(PAS$," ") THEN PAS$=LEFT$(PAS$,INSTR(PAS$,CHR$(&H20))-1)
  1349. 14480  SHELL "CD "+PAS$
  1350. 14490  ON ERROR GOTO *MERR
  1351. 14500  IF SLF THEN GOSUB *FI_CLEAR
  1352. 14510  IF ERN THEN PAS$="":CP=0:DIR=0
  1353. 14520  GOSUB *PAS_PUT
  1354. 14530  LINE(WX(4)+112,WY(4)+51)-STEP(14*6+4-1,16*4+1),PSET,7,BF
  1355. 14540 RETURN
  1356. 14550 *WLD_LIST
  1357. 14560  GOSUB *DIR_SEARCH
  1358. 14570  LINE(WX(4)+112,WY(4)+51)-STEP(14*6+4-1,16*4+1),PSET,7,BF
  1359. 14580  CP=0:IF DIR=0 THEN 14620
  1360. 14590  FOR I=0 TO -4*(DIR>4)-(DIR<=4)*(DIR-1)
  1361. 14600   FPY=I:FPS$=DIR$(I):GOSUB *FLIST_P
  1362. 14610  NEXT:WAIT 10
  1363. 14620 RETURN
  1364. 14630 *FLIST_P
  1365. 14640  IF LEFT$(FPS$,1)="D" THEN FFPS$="<"+MID$(FPS$,2):FFPS$=FFPS$+STRING$(14-LEN(FFPS$)-1," ")+">"
  1366. 14650  IF LEFT$(FPS$,2)="D." THEN FFPS$="< .         >"
  1367. 14660  IF LEFT$(FPS$,3)="D.." THEN FFPS$="<<親ディレクトリ >>"
  1368. 14670  IF LEFT$(FPS$,1)="F" THEN IF INSTR(FPS$,".") THEN FFPS$=" "+MID$(FPS$,2,INSTR(FPS$,".")-2):FFPS$=FFPS$+STRING$(14-LEN(FFPS$)-4," ")+MID$(FPS$,INSTR(FPS$,".")+1,3) ELSE FFPS$=" "+MID$(FPS$,2,8)
  1369. 14680  SYMBOL(WX(4)+114,WY(4)+52+FPY*13),FFPS$,.75!,.75!,%14
  1370. 14690 RETURN
  1371. 14700 *DIR_CHANGE
  1372. 14710  ON ERROR GOTO *DRV_SEL_E
  1373. 14720  SHELL "CD "+CH$
  1374. 14730  ON ERROR GOTO *MERR
  1375. 14740  IF SLF THEN GOSUB *FI_CLEAR
  1376. 14750  IF ERN THEN PAS$="" ELSE PAS$=STRING$(255,0):RET&=CALLM(BAS_LIB&,2,ASC(DRV$),VARPTR(PAS$))
  1377. 14760  GOSUB *PAS_PUT
  1378. 14770  LINE(WX(4)+112,WY(4)+51)-STEP(14*6+4-1,16*4+1),PSET,7,BF
  1379. 14780 RETURN
  1380. 14790 *FLIST_PUT
  1381. 14800 'CPD-方向
  1382. 14810  IF CPD=1 THEN GET@A(WX(4)+112,WY(4)+51+13)-(14*6+4-1+WX(4)+112,16*4+1+WY(4)+51),FLSB&:PUT@A(WX(4)+112,WY(4)+51)-(14*6+4-1+WX(4)+112,-13+16*4+1+WY(4)+51),FLSB&
  1383. 14820  IF CPD=-1 THEN GET@A(WX(4)+112,WY(4)+51)-(14*6+4-1+WX(4)+112,-13+16*4+1+WY(4)+51),FLSB&:PUT@A(WX(4)+112,13+WY(4)+51)-(14*6+4-1+WX(4)+112,16*4+1+WY(4)+51),FLSB&
  1384. 14830  CP=CP+CPD
  1385. 14840  IF CPD=1 THEN LINE(WX(4)+112,WY(4)+51+52)-STEP(14*6+4-1,12),PSET,7,BF:FPS$=DIR$(CP+4):FPY=4:GOSUB *FLIST_P
  1386. 14850  IF CPD=-1 THEN LINE(WX(4)+112,WY(4)+51)-STEP(14*6+4-1,12),PSET,7,BF:FPS$=DIR$(CP):FPY=0:GOSUB *FLIST_P
  1387. 14860 RETURN
  1388. 14870 CLS:CLEAR ,,,,,300*1024:DEF FONT "システム   12ドット":DIM MES$(4):PALETTE 14,0:MES=1:MES$(1)="終了します。よろしいですか?":MES$(2)="よろしいですか?":MES_YN=1:GOSUB *MES_YN:WHILE INKEY$="":WEND
  1389. 14880 END
  1390. 14890 *MES_YN
  1391. 14900  '(128,196)-(511,283) 'MES_YN=0:イエスノー =1:確認  YN:YかNか。
  1392. 14910   GET@A(128,196)-(511,283),MESW&
  1393. 14920   LINE(128,196)-(511,283),PSET,%7,BF
  1394. 14930   LINE(128,196)-(511,196),PSET,%15
  1395. 14940   LINE(128,196)-(128,283),PSET,%15
  1396. 14950   LINE(511,283)-(511,196),PSET,%8
  1397. 14960   LINE(511-1,283)-(511-1,197),PSET,%8
  1398. 14970   LINE(511,283)-(128,283),PSET,%8
  1399. 14980   LINE(511,283-1)-(129,283-1),PSET,%8
  1400. 14990   FOR ME=0 TO MES
  1401. 15000     SYMBOL(128+12,196+8+ME*16),MES$(ME),.75!,.75!,%14
  1402. 15010     SYMBOL(128+14,196+8+ME*16),MES$(ME),.75!,.75!,%7
  1403. 15020     SYMBOL(128+13,196+8+ME*16),MES$(ME),.75!,.75!,%14
  1404. 15030   NEXT
  1405. 15040   IF MES_YN=0 THEN
  1406. 15050     MSX=436:MSY=260:MEX=MSX+31:MEY=MSY+15:S$="うん":GOSUB *PTOP
  1407. 15060     MSX=472:MSY=260:MEX=MSX+31:MEY=MSY+15:S$="だめ":GOSUB *PTOP
  1408. 15070     MSX=436:MSY=260:MEX=MSX+31:MEY=MSY+15:GOSUB *BTN_CHK
  1409. 15080     IF MOS THEN YN=-1:GOTO 15160
  1410. 15090     MSX=472:MSY=260:MEX=MSX+31:MEY=MSY+15:GOSUB *BTN_CHK
  1411. 15100     IF MOS THEN YN=0:GOTO 15160
  1412. 15110     GOTO 15070
  1413. 15120   ELSE
  1414. 15130     MSX=472:MSY=260:MEX=MSX+31:MEY=MSY+15:S$="確認":GOSUB *PTOP
  1415. 15140     GOSUB *BTN_CHK:IF MOS THEN ELSE 15140
  1416. 15150   ENDIF
  1417. 15160   PUT@A(128,196)-(511,283),MESW&
  1418. 15170   ERASE MES$:DIM MES$(3)
  1419. 15180 RETURN
  1420. 15190 *MW0:BCHK=1
  1421. 15200  FOR J__=0 TO 8
  1422. 15210    MSX=WX(0)+6+(J__ MOD 3)*42:MSY=WY(0)+20+(J__\3)*18:MEX=MSX+39:MEY=MSY+15
  1423. 15220    GOSUB *BTN_CHK
  1424. 15230    IF MOS AND MAIN<>J__ THEN
  1425. 15240      MPN=6:GOSUB *M_PAT
  1426. 15250      ON J__+1 GOSUB *MW00,*MW01,*MW02,*MW03,*MW04,*MW05,*MW06,*MW07,*MW08
  1427. 15260    ENDIF
  1428. 15270  NEXT
  1429. 15280  MSX=WX(0)+4:MSY=WY(0)+4:MEX=MSX+11:MEY=MSY+11:GOSUB *BTN_CHK
  1430. 15290  IF MOS THEN GOSUB *WIN_OFF:BCHK=0
  1431. 15300  MSX=WX(0)+2:MSY=WY(0)+2:MEX=MSX+WWX(0)-5:MEY=MSY+15:GOSUB *BTN_CHK2
  1432. 15310  IF BCHK AND MOS THEN GOSUB *MOVE_WIN
  1433. 15320 RETURN
  1434. 15330 *MW00
  1435. 15340    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_OFF
  1436. 15350   MAIN=0
  1437. 15360    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  1438. 15370   IF PPEN=-1 THEN MPN=0 ELSE MPN=16+PPEN:GOSUB *M_PAT
  1439. 15380 RETURN
  1440. 15390 *MW01
  1441. 15400    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_OFF
  1442. 15410    MAIN=1
  1443. 15420    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  1444. 15430    WIN_X=WX(4):WIN_Y=WY(4):MES$="背景TIFFロード":SLF=1:DRV$="":PAS$="":WLD$="*.TIF":FI$="":GOSUB *FILE_SELECT
  1445. 15440    IF FIL$="" THEN 15740
  1446. 15450    GOSUB *W_GET:GOSUB *B_GET:GOSUB *ALL_WINC:SPRITE OFF:SCREEN@0:SCREEN 0:GOSUB *M_OFF
  1447. 15460    CLS:ER=0
  1448. 15470    ON ERROR GOTO *E
  1449. 15480    GOSUB *M_OFF:LOAD@ FIL$:GOSUB *M_ON
  1450. 15490    ON ERROR GOTO *MERR
  1451. 15500    IF ER THEN MES$(1)="TIFFファイルが読めません。":MES=1:MES_YN=1:GOSUB *MES_YN:GOTO 15730
  1452. 15510    MOUSE 4,0,0,384,224
  1453. 15520    LBX=MOUSE(0):LBY=MOUSE(1)
  1454. 15530    LINE(LBX,LBY)-STEP(255,255),XOR,7,B
  1455. 15540    IF MOUSE(2,0) THEN 15590
  1456. 15550    IF MOUSE(2,1) THEN 15730
  1457. 15560    IF LBX=MOUSE(0) AND LBY=MOUSE(1) THEN 15540
  1458. 15570    LINE(LBX,LBY)-STEP(255,255),XOR,7,B
  1459. 15580    GOTO 15520
  1460. 15590    LINE(LBX,LBY)-STEP(255,255),XOR,7,B
  1461. 15600    GET@A(LBX,LBY)-(LBX+255,LBY+255),BACK&
  1462. 15610    GOSUB *B_PUT
  1463. 15620    GOSUB *SET_BACK
  1464. 15630    FOR II=0 TO 15
  1465. 15640     OUT &HFD90,II AND 15,1
  1466. 15650     B=INP(&HFD92,1)\8
  1467. 15660     R=INP(&HFD94,1)\8
  1468. 15670     G=INP(&HFD96,1)\8
  1469. 15680     GOSUB *RGB_GOUSEI
  1470. 15690     BPAL(II)=RGB
  1471. 15700    NEXT
  1472. 15710    DEF SPRITE 2,1,BPAL
  1473. 15720    'GOSUB *W_GET:GOSUB *B_GET
  1474. 15730    GOSUB *M_ON:GOSUB *MAIN_SCREEN:GOSUB *RGB_SET:':GOSUB *ALL_WINO
  1475. 15740 GOTO *MW00
  1476. 15750 *MW03
  1477. 15760    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_OFF
  1478. 15770    MAIN=3
  1479. 15780    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  1480. 15790    WIN_X=WX(4):WIN_Y=WY(4):MES$="データロード":SLF=1:DRV$="":PAS$="":WLD$="*.EDO":FI$="":KAK$="EDO":GOSUB *FILE_SELECT
  1481. 15800    IF FIL$="" THEN 15940
  1482. 15810    ER=0:GOSUB *B_GET:GOSUB *W_GET
  1483. 15820    ON ERROR GOTO *E
  1484. 15830    LOAD@ FIL$,EDO
  1485. 15840    IF ER THEN MES$(1)="ファイルが読めません。":MES=1:MES_YN=1:GOSUB *MES_YN:GOTO 15940
  1486. 15850    ER=0:GOSUB *M_OFF:LOAD@ LEFT$(FIL$,INSTR(FIL$,".")-1)+".TIF",(640,0):GOSUB *M_ON
  1487. 15860    ON ERROR GOTO *MERR
  1488. 15870    IF ER THEN MES$(1)="ファイルが読めません。":MES=1:MES_YN=1:GOSUB *MES_YN:GOTO 15940
  1489. 15880    GOSUB *MK_EDO
  1490. 15890    IF ID$<>"EDO1" THEN MES$(1)="ファイルが読めません。":MES=1:MES_YN=1:GOSUB *MES_YN:GOTO 15940
  1491. 15900    GOSUB *W_GET
  1492. 15910    GOSUB *SET_CHAR
  1493. 15920    GOSUB *MK_EDO_PLT
  1494. 15930    KAKI=0:EDO$=FI$
  1495. 15940    GOSUB *WB_PUT
  1496. 15950 GOTO *MW00
  1497. 15960 *MK_EDO
  1498. 15970  ID$="":FOR IK=0 TO 3:ID$=ID$+CHR$(PEEK(VARPTR(EDO(0))+IK,1)):NEXT
  1499. 15980 RETURN
  1500. 15990 *MK_EDO_PLT
  1501. 16000  FOR IK=0 TO 15:PL(IK)=EDO(8+IK):NEXT:GOSUB *PAL_SET:RGB=PL(0):GOSUB *RGB_BUNKAI:PALETTE 13,[G*8,R*8,B*8]:RGB=PL(PAL):GOSUB *RGB_BUNKAI:PALETTE 11,[G*8,R*8,B*8]
  1502. 16010  RGB&=PL(0):CALLM SPRBACK&,RGB&
  1503. 16020  GOSUB *ALL_WINC:GOSUB *ALL_WINO
  1504. 16030 RETURN
  1505. 16040 *MW04
  1506. 16050    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_OFF
  1507. 16060    MAIN=4
  1508. 16070    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  1509. 16080    WIN_X=WX(4):WIN_Y=WY(4):MES$="データセーブ":SLF=0:DRV$="":PAS$="":WLD$="*.EDO":FI$=EDO$:GOSUB *FILE_SELECT
  1510. 16090    IF FIL$="" THEN 16350
  1511. 16100    ID$="EDO1"
  1512. 16110    TOOL$="江V1L10a"
  1513. 16120    GOSUB *MK_EDOS
  1514. 16130    IF INSTR(FIL$,".")=0 THEN FIL$=FIL$+".EDO"
  1515. 16140    F$=LEFT$(FIL$,INSTR(FIL$,".")-1)':IF LEN(F$)>8 THEN *S_ER
  1516. 16150    FK$=MID$(FIL$,INSTR(FIL$,".")):IF FK$<>".EDO" THEN *S_ER
  1517. 16160    ON ERROR GOTO *E
  1518. 16170    ER=0:SAVE@ "EDO$$$ED.TMP",EDO
  1519. 16180    IF ER=64 THEN ER=0:KILL"EDO$$$ED.TMP":IF ER THEN *S_ER ELSE 16170
  1520. 16190    IF ER THEN *S_ER
  1521. 16200    ER=0:GOSUB *M_OFF:SAVE@ "EDO$$$TF.TIF",(640,0)-(895,255),0,1:GOSUB *M_ON
  1522. 16210    IF ER=64 THEN ER=0:KILL"EDO$$$TF.TIF":IF ER THEN *S_ER ELSE 16200
  1523. 16220    IF ER THEN *S_ER
  1524. 16230    ER=0
  1525. 16240    NAME "EDO$$$ED.TMP" AS FIL$
  1526. 16250    IF ER=64 THEN
  1527. 16260      MES$(1)="同名のファイルが存在します。上書きしてもよいですか?"
  1528. 16270      MES=1:MES_YN=0:GOSUB *MES_YN
  1529. 16280      IF YN THEN ER=0:KILL FIL$:IF ER THEN *S_ER ELSE ER=0:KILL F$+".TIF":IF ER THEN *S_ER ELSE GOTO 16240
  1530. 16290    ENDIF
  1531. 16300    IF ER THEN *S_ER
  1532. 16310    ER=0
  1533. 16320    NAME "EDO$$$TF.TIF" AS F$+".TIF"
  1534. 16330    IF ER THEN *S_ER
  1535. 16340    KAKI=0:EDO$=FI$:ON ERROR GOTO *MERR
  1536. 16350 GOTO *MW00
  1537. 16360 *S_ER:ON ERROR GOTO *MERR
  1538. 16370   MES$(1)="保存できません。確認してください。"
  1539. 16380   MES=1:MES_YN=1:GOSUB *MES_YN
  1540. 16390 GOTO *MW00
  1541. 16400 *MK_EDOS
  1542. 16410   FOR IK=0 TO 3:POKE VARPTR(EDO(0))+IK,ASC(MID$(ID$,IK+1,1)),1:NEXT
  1543. 16420   FOR IK=0 TO 7:POKE VARPTR(EDO(0))+4+IK,ASC(MID$(TOOL$,IK+1,1)),1:NEXT
  1544. 16430   FOR IK=0 TO 15:EDO(8+IK)=PL(IK):NEXT
  1545. 16440 RETURN
  1546. 16450 *MW02
  1547. 16460  GOSUB *B_GET:GOSUB *W_GET
  1548. 16470  PUT@A(640,256)-(895,511),WORK&
  1549. 16480  PUT@A(640,0)-(895,255),UNDO&
  1550. 16490  GOSUB *W_GET
  1551. 16500  GET@A(640,256)-(895,511),UNDO&
  1552. 16510  GOSUB *B_PUT
  1553. 16520  GOSUB *SET_CHAR
  1554. 16530 GOTO *MW00
  1555. 16540 *MW05
  1556. 16550 RETURN
  1557. 16560 *MW06
  1558. 16570  MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_OFF
  1559. 16580    MAIN=6
  1560. 16590  MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  1561. 16600  IF KAKI THEN MES$(1)="書換え箇所がありますが、":MES$(2)="全て消去しても宜しいですか?":MES=2:MES_YN=0:GOSUB *MES_YN:IF YN THEN ELSE 16690
  1562. 16610  ERASE BACK&,WORK&
  1563. 16620  DIM WORK&(16*16*32-1),BACK&(16*16*32-1)
  1564. 16630  ERASE PL,BPAL
  1565. 16640  DIM PL(15),BPAL(15)
  1566. 16650  GOSUB *WB_PUT
  1567. 16660  GOSUB *SET_CHAR:GOSUB *SET_BACK
  1568. 16670  DEF SPRITE 2,0,PL:DEF SPRITE 2,1,BPAL
  1569. 16680  GOSUB *MAIN_SCREEN:KAKI=0
  1570. 16690 GOTO *MW00
  1571. 16700 *MW07:BCHK=1
  1572. 16710    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_OFF
  1573. 16720    MAIN=7
  1574. 16730    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  1575. 16740    WN=6:GOSUB *WIN_ON
  1576. 16750 MSX=WX(6)+6:MSY=WY(6)+20:MEX=WX(6)+16+12*6-1:MEY=WY(6)+35:GOSUB *BTN_CHK:IF MOS THEN GOSUB *SWT_ON_R:GOSUB *CDP:MSX=WX(6)+6:MSY=WY(6)+20:MEX=WX(6)+16+12*6-1:MEY=WY(6)+35:GOSUB *SWT_OFF
  1577. 16760 MSX=WX(6)+6:MSY=WY(6)+38:MEX=WX(6)+16+12*6-1:MEY=WY(6)+53:GOSUB *BTN_CHK:IF MOS THEN GOSUB *SWT_ON_R:GOSUB *EUP:MSX=WX(6)+6:MSY=WY(6)+38:MEX=WX(6)+16+12*6-1:MEY=WY(6)+53:GOSUB *SWT_OFF
  1578. 16770  MSX=WX(6)+4:MSY=WY(6)+4:MEX=MSX+11:MEY=MSY+11:GOSUB *BTN_CHK
  1579. 16780  IF MOS THEN GOSUB *WIN_OFF:BCHK=0:WN=0:GOTO *MW00
  1580. 16790  MSX=WX(6)+2:MSY=WY(6)+2:MEX=MSX+WWX(6)-5:MEY=MSY+15:GOSUB *BTN_CHK2
  1581. 16800  IF BCHK AND MOS THEN GOSUB *MOVE_WIN
  1582. 16810 GOTO 16750
  1583. 16820 *EUP:BCHK=1
  1584. 16830  WN=8:GOSUB *WIN_ON
  1585. 16840  EUPL=PLAY(0)
  1586. 16850  IF EUPL<>PLAY(0) THEN MSX=WX(8)+6:MSY=WY(8)+38:MEX=MSX+8+30-1:MEY=MSY+15:IF PLAY(0) THEN GOSUB *SWT_ON_R:EUPL=-1 ELSE GOSUB *SWT_OFF:EUPL=0
  1587. 16860  MSX=WX(8)+46:MSY=WY(8)+20:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *BTN_CHK
  1588. 16870  IF MOS THEN LOOP=NOT(LOOP):IF LOOP THEN GOSUB *SWT_ON_G ELSE GOSUB *SWT_OFF
  1589. 16880  MSX=WX(8)+6:MSY=WY(8)+38:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *BTN_CHK
  1590. 16890  IF MOS THEN ON ERROR GOTO *E:PLAY@ EUP,-LOOP:ON ERROR GOTO *MERR:IF ER THEN ELSE GOSUB *SWT_ON_R
  1591. 16900  MSX=WX(8)+46:MSY=WY(8)+38:MEX=MSX+8+30-1:MEY=15+MSY:GOSUB *BTN_CHK
  1592. 16910  IF MOS THEN PLAY OFF:GOSUB *FM_OFF:MSX=WX(8)+6:MSY=WY(8)+38:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *SWT_OFF
  1593. 16920  MSX=WX(8)+6:MSY=WY(8)+20:MEX=MSX+8+30-1:MEY=15+MSY:GOSUB *BTN_CHK
  1594. 16930  IF MOS THEN
  1595. 16940    WIN_X=WX(4):WIN_Y=WY(4):DRV$="":PAS$="":WLD$="*.EUP":MES$="EUP演奏ファイル選択":FI$="":SLF=1:GOSUB *FILE_SELECT
  1596. 16950    PLAY OFF:GOSUB *FM_OFF:MSX=WX(8)+6:MSY=WY(8)+38:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *SWT_OFF
  1597. 16960    IF FIL$="" THEN ELSE ON ERROR GOTO *E:ER=0:OPEN"I",#1,FIL$:CLOSE:IF ER THEN ELSE FP$=FIL$+CHR$(0):ERASE EUP:DIM EUP(CALLM(BAS_LIB&,14,VARPTR(FP$))\2+1+16):LOAD@ FIL$,EUP:ON ERROR GOTO *MERR
  1598. 16970  ENDIF
  1599. 16980  MSX=WX(8)+4:MSY=WY(8)+4:MEX=MSX+11:MEY=MSY+11:GOSUB *BTN_CHK
  1600. 16990  IF MOS THEN WN=8:GOSUB *WIN_OFF:WN=6:RETURN
  1601. 17000  MSX=WX(8)+2:MSY=WY(8)+2:MEX=MSX+WWX(8)-5:MEY=MSY+15:GOSUB *BTN_CHK2
  1602. 17010  IF BCHK AND MOS THEN GOSUB *MOVE_WIN
  1603. 17020  GOTO 16850
  1604. 17030 *CDP:BCHK=1
  1605. 17040  WN=7:GOSUB *WIN_ON:MCDS=-2
  1606. 17050  ON ERROR GOTO *E
  1607. 17060  ER=0:CDSTAT CDS
  1608. 17070  ON ERROR GOTO *MERR
  1609. 17080  IF ER<>0 THEN CDS(5)=-1:CDS(1)=0
  1610. 17090  IF MCDS<>CDS(5) THEN
  1611. 17100    LINE(WX(7)+7,WY(7)+21)-(WX(7)+32+4,WY(7)+34+18),PSET,%14,BF
  1612. 17110    IF CDS(5)=-1 THEN ELSE SYMBOL(WX(7)+11,WY(7)+25),RIGHT$(STR$(CDS(5)),2),1.5!,1.5!,4
  1613. 17120    MSX=WX(7)+42:MSY=WY(7)+38:MEX=MSX+8+30-1:MEY=MSY+15
  1614. 17130    IF CDS(5)=-1 OR CDS(1)=0 THEN GOSUB *SWT_OFF ELSE GOSUB *SWT_ON_R
  1615. 17140    MCDS=CDS(5)
  1616. 17150  ENDIF
  1617. 17160  MSX=WX(7)+42:MSY=WY(7)+38:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *BTN_CHK
  1618. 17170  IF MOS AND CDS(1)=0 THEN ON ERROR GOTO *E:CDINF CDI:CD PLAY 1-(CDI(1)=3),CDI(5):ON ERROR GOTO *MERR
  1619. 17180  MSX=WX(7)+82:MSY=WY(7)+38:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *BTN_CHK
  1620. 17190  IF MOS AND CDS(1)=1 THEN ON ERROR GOTO *E:CD STOP:ON ERROR GOTO *MERR
  1621. 17200  MSX=WX(7)+42:MSY=WY(7)+20:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *BTN_CHK
  1622. 17210  IF MOS AND CDS(1)=1 THEN ON ERROR GOTO *E:CDINF CDI:IF CDS(5)>1-(CDI(1)=3) THEN CD PLAY CDS(5)-1,CDI(5):ON ERROR GOTO *MERR ELSE ON ERROR GOTO *MERR
  1623. 17220  MSX=WX(7)+82:MSY=WY(7)+20:MEX=MSX+8+30-1:MEY=MSY+15:GOSUB *BTN_CHK
  1624. 17230  IF MOS AND CDS(1)=1 THEN ON ERROR GOTO *E:CDINF CDI:IF CDS(5)<CDI(5) THEN CD PLAY CDS(5)+1,CDI(5):ON ERROR GOTO *MERR ELSE ON ERROR GOTO *MERR
  1625. 17240  MSX=WX(7)+4:MSY=WY(7)+4:MEX=MSX+11:MEY=MSY+11:GOSUB *BTN_CHK
  1626. 17250  IF MOS THEN WN=7:GOSUB *WIN_OFF:WN=6:RETURN
  1627. 17260  MSX=WX(7)+2:MSY=WY(7)+2:MEX=MSX+WWX(7)-5:MEY=MSY+15:GOSUB *BTN_CHK2
  1628. 17270  IF BCHK AND MOS THEN GOSUB *MOVE_WIN
  1629. 17280  GOTO 17050
  1630. 17290 *MW08
  1631. 17300    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_OFF
  1632. 17310    MAIN=8
  1633. 17320    MSX=WX(0)+6+(MAIN MOD 3)*42:MSY=WY(0)+20+(MAIN\3)*18:MEX=MSX+39:MEY=MSY+15:GOSUB *SWT_ON_R
  1634. 17330  IF KAKI THEN MES$(1)="書換え箇所がありますが、":MES$(2)="そのまま終了しても宜しいですか?":MES=2:MES_YN=0:GOSUB *MES_YN ELSE MES$(1)="「江戸」を終了します。宜しいですか?":MES=1:MES_YN=0:GOSUB *MES_YN
  1635. 17340  IF YN THEN END
  1636. 17350 GOTO *MW00
  1637. 17360 *E
  1638. 17370   ER=ERR
  1639. 17380 RESUME NEXT
  1640. 17390 *M_EDO
  1641. 17400  IF PPEN=-1 THEN RETURN
  1642. 17410  IF FNMPAU(96,32,607,471,1) THEN GOSUB *S_SPOIT:RETURN
  1643. 17420  IF FNMPAU(96,32,607,471,0) THEN
  1644. 17430    ON PPEN+1 GOSUB *ME1,*ME2
  1645. 17440    IF PPEN<>0 THEN MPEDOX=-1:MPEDOY=-1
  1646. 17450    RETURN
  1647. 17460  ENDIF
  1648. 17470  'IF UNF THEN GOSUB *UNDO:UNF=0
  1649. 17480 RETURN
  1650. 17490 *S_SPOIT
  1651. 17500   EDO_X=MOUSE(0):EDO_Y=MOUSE(1)
  1652. 17510   IF EDO_X<96 OR EDO_Y<32 OR EDO_X>607 OR EDO_Y>471 THEN RETURN
  1653. 17520     GET@A(640+(EDO_X-96)\(GB*2)+GX,(EDO_Y-32)\(GB*2)+GY)-(640+(EDO_X-96)\(GB*2)+GX,(EDO_Y-32)\(GB*2)+GY),SPO:IF PAL=SPO(0) THEN 17560 ELSE SQ=PAL:PAL=SPO(0)
  1654. 17530     IF WIN<>-1 THEN IF WIF(WIN)=3 THEN WN=3:GOSUB *RGB_PUT:GOSUB *R_SQ
  1655. 17540     IF WIN<>-1 THEN IF SEARCH(WIF,3)<>-1 AND SEARCH(WIF,3)<=WIN AND WIF(WIN)<>3 THEN WN=3:GOSUB *WTOP
  1656. 17550     RGB=PL(PAL):GOSUB *RGB_BUNKAI:PALETTE 11,[G*8,R*8,B*8]
  1657. 17560     MPEDOX=-1:MPEDOY=-1
  1658. 17565 RETURN
  1659. 17570 *ME1
  1660. 17580   EDO_X=MOUSE(0):EDO_Y=MOUSE(1)
  1661. 17590   IF EDO_X<96 OR EDO_Y<32 OR EDO_X>607 OR EDO_Y>471 THEN RETURN
  1662. 17600     'GOSUB *M_OFF':GOSUB *UNDO
  1663. 17610     'GET@A(640+(EDO_X-96)\(GB*2)+GX,(EDO_Y-32)\(GB*2)+GY)-(640+(EDO_X-96)\(GB*2)+GX,(EDO_Y-32)\(GB*2)+GY),DM&:IF DM&(0)=PAL THEN 17630
  1664. 17620     PEDOX=(EDO_X-96)\(GB*2)+GX:PEDOY=(EDO_Y-32)\(GB*2)+GY
  1665. 17630     IF MPEDOX=PEDOX AND MPEDOY=PEDOY THEN RETURN
  1666. 17640     PSET(640+PEDOX,PEDOY),%PAL
  1667. 17650     KAKI=1
  1668. 17660     EDX=PEDOX\16:EDY=PEDOY\16
  1669. 17670     GET@A(640+EDX*16,EDY*16)-(655+EDX*16,EDY*16+15),DM&
  1670. 17680     MPEDOX=PEDOX:MPEDOY=PEDOY
  1671. 17690     'GOSUB *M_ON:UNF=-1
  1672. 17700     DEF SPRITE 0,EDX+EDY*16,DM&,0
  1673. 17710 RETURN
  1674. 17720 *ME2
  1675. 17730   EDO_X=MOUSE(0):EDO_Y=MOUSE(1)
  1676. 17740   IF EDO_X<96 OR EDO_Y<32 OR EDO_X>607 OR EDO_Y>471 THEN RETURN
  1677. 17750   KAKI=1:GOSUB *UNDO
  1678. 17760   EDEX=GX+256\GB-1:EDEY=GY+228\GB-1
  1679. 17770   VIEW(640+GX,GY)-(640+EDEX,EDEY)
  1680. 17780   WINDOW(640+GX,GY)-(640+EDEX,EDEY)
  1681. 17790   PAINT@(640+(EDO_X-96)\(GB*2)+GX,(EDO_Y-32)\(GB*2)+GY),%PAL
  1682. 17800   GOSUB *N_VIEW
  1683. 17810   FOR EDY=GY\16 TO EDEY\16:FOR EDX=GX\16 TO EDEX\16
  1684. 17820     GET@A(640+EDX*16,EDY*16)-(655+EDX*16,EDY*16+15),DM&
  1685. 17830     DEF SPRITE 0,EDX+EDY*16,DM&,0
  1686. 17840   NEXT:NEXT
  1687. 17850 RETURN
  1688. 17860 *UNDO
  1689. 17870  GET@A(640,0)-(895,255),UNDO&
  1690. 17880 RETURN
  1691. 17890 *SPR_XY'スプライト絶対位置指定移動
  1692. 17900 '[SPR_N,SPR_X,SPR_Y]
  1693. 17910   SPRITE 6,SPR_N,SPR_X-SPRITE(SPR_N,6),SPR_Y-SPRITE(SPR_N,7)
  1694. 17920 RETURN
  1695.